簡體   English   中英

添加多個工作表,命名它們,並將粘貼動態范圍復制到新工作表中

[英]Add multiple sheets, name them, and copy paste dynamic range into new sheets

我是excel的新手,我正在嘗試添加多張表,每一張都有名字。 宏只是一次添加一張表,例如我將點擊“運行”,它將創建“價格調整”表但沒有其他表。 當我再次單擊“運行”時,它將僅創建下表,依此類推。

Sub NewSheets()

With Sheets.Add()
    .Name = "CustomerTable"
    .Name = "EmployeeTable"
    .Name = "OrdersTable"
    .Name = "ProductTable"
    .Name = "PriceAdjustment"
End With

End Sub

謝謝

代碼的最快改進是將Add() method移到With...End With語句中:

Sub NewSheets()

With Sheets
    .Add().Name = "CustomerTable"
    .Add().Name = "EmployeeTable"
    .Add().Name = "OrdersTable"
    .Add().Name = "ProductTable"
    .Add().Name = "PriceAdjustment"
End With

End Sub

這是因為您正在調用Add()方法一次。 嘗試這個:

Sub AddNewWorksheet(name as String)
    With Worksheets.Add()
        .Name = name
    End With
End Sub

然后你可以像這樣添加工作表:

AddNewWorksheet("CustomerTable")
AddNewWorksheet("EmployeeTable")
'...

另一種方法是將新的工作表名稱放入一個數組中,然后遍歷數組以一次創建所有五個表。

有關代碼的幾點注意事項:

  • 工作表名稱的數組shArray被聲明為Variant,因此我們可以使用Array函數填充數組,而無需遍歷數組來分配每個元素。

  • 在設置For循環時,我使用LBoundUBound函數來計算數組的第一個和最后一個元素的索引號。 這樣,如果數字改變,則沒有必要跟蹤數組元素的數量。

     Option Explicit 'Turn on compiler option requiring 'that all variables be declared Sub NewSheets() Dim shArray() As Variant 'Declare the sheet Name array and a Dim i As Long 'counter variable shArray = Array("CustomerTable", _ "EmployeeTable", _ "OrdersTable", _ "ProductTable", _ "PriceAdjustment") 'Populate the array For i = LBound(shArray) To UBound(shArray) 'Loop through the elements Sheets.Add().Name = shArray(i) Next i End Sub 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM