如何将一组工作表名称输入 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

在上面。