Excel VBA,取消隐藏数组中的工作表,运行-时间错误“13”:类型不匹配

Excel VBA, UnHiding Sheets in array, Run-time error '13': Type mismatch

我正在尝试使用数组取消隐藏特定的 sheet,但出现 运行 时错误“13”。 正是这一行特定的代码给我错误:

Worksheets(WS).Visible = True

我设法使用数组隐藏了特定的 sheet(我参考了 sheet 的代号以避免将来出现引用问题),请参见下面的代码:

Sub Hide_sheets_By_CodeName()

Dim Ws_Array As Variant
Set Ws_Array = Sheets(Array(Tiger.Name, Dog.Name, Cat.Name))
Ws_Array.Visible = False

End Sub

要取消隐藏它们,我读到您必须遍历数组中的每个 sheet。我为此使用了这段代码(这里我得到了错误):

Sub UnHide_sheets_By_CodeName()
Dim WS As Worksheet
Dim Ws_Array As Variant

Set Ws_Array = Sheets(Array(Tiger.Name, Dog.Name, Cat.Name))

For Each WS In Ws_Array
    Worksheets(WS).Visible = True

Next

End Sub

非常感谢任何帮助:)

WS_Array是Type Sheets的对象,即成员是sheet。因此 Worksheets(WS).Visible = True 遇到错误 13,因为 Worksheets(name of sheet) 需要一个字符串而不是一个对象。

要么将 for 循环更改为

For Each WS In Ws_Array    
    Worksheets(WS.Name).Visible = xlSheetVisible
Next

或到

For Each WS In Ws_Array
    WS.Visible = xlSheetVisible    
Next