如何将一组工作表名称输入 VBA Sheets.Copy?
How do I feed an array of worksheet names into VBA Sheets.Copy?
我有这段代码,它用工作表名称填充一个数组,给定一个条件:
Dim lng_Counter As Long
Dim arr_wks() As Variant
lng_Counter = 1
For Each wks In ThisWorkbook.Worksheets
If Left(wks.Name, 2) = "Hi" Then
ReDim Preserve arr_wks(lng_Counter)
arr_wks(lng_Counter) = wks.Name
lng_Counter = lng_Counter +1
End if
Next wks
然后我想将这些工作表复制到一个新的工作簿中,所以我尝试了这样的操作:
Sheets(arr_wks()).Copy
这是行不通的。我能让它工作的唯一方法是写出:
Sheets(Array(arr_wks(1),arr_Wks(2),...)).Copy
这没有用,因为数组的大小会根据给定时间满足条件的工作表数量而变化。
如何将数组输入 Sheets(arr).Copy 类型参数?
您最终遇到第一个元素(索引为零)为空的错误。
你可以用
解决这个问题
lng_Counter = 0
,或
ReDim Preserve arr_wks(1 to lng_Counter)
,或
Option Base 1
在上面。
我有这段代码,它用工作表名称填充一个数组,给定一个条件:
Dim lng_Counter As Long
Dim arr_wks() As Variant
lng_Counter = 1
For Each wks In ThisWorkbook.Worksheets
If Left(wks.Name, 2) = "Hi" Then
ReDim Preserve arr_wks(lng_Counter)
arr_wks(lng_Counter) = wks.Name
lng_Counter = lng_Counter +1
End if
Next wks
然后我想将这些工作表复制到一个新的工作簿中,所以我尝试了这样的操作:
Sheets(arr_wks()).Copy
这是行不通的。我能让它工作的唯一方法是写出:
Sheets(Array(arr_wks(1),arr_Wks(2),...)).Copy
这没有用,因为数组的大小会根据给定时间满足条件的工作表数量而变化。
如何将数组输入 Sheets(arr).Copy 类型参数?
您最终遇到第一个元素(索引为零)为空的错误。
你可以用
解决这个问题lng_Counter = 0
,或
ReDim Preserve arr_wks(1 to lng_Counter)
,或
Option Base 1
在上面。