[英]I need to copy a specific range in multiple sheets and paste them on a final sheet
[英]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
循環時,我使用LBound
和UBound
函數來計算數組的第一個和最后一個元素的索引號。 這樣,如果數字改變,則沒有必要跟蹤數組元素的數量。
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.