如何将一组工作表名称提供给VBA Sheets.Copy?

问题描述 投票:0回答: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类型参数?

arrays excel vba copy worksheet
1个回答
1
投票

最终出现错误,其中第一个元素(索引为零)为空。

你可以解决这个问题

lng_Counter = 0

, 要么

ReDim Preserve arr_wks(1 to lng_Counter)

, 要么

Option Base 1

在上面。

© www.soinside.com 2019 - 2024. All rights reserved.