VBA:用于数组的For循环给出错误

VBA:用于数组的For循环给出错误,vba,excel,Vba,Excel,下面的代码给出了“数组上的每个控制变量都必须是变量”错误。但如果我没弄错的话,ws_名称是一个变体数组。有人能解释一下吗?谢谢大家! Public Sub test12() Dim ws_names() As Variant ws_names = Array("Sheet2", "Sheet3") Dim ws_name As String For Each ws_name In ws_names() ThisWorkbook.Worksheets

下面的代码给出了“数组上的每个控制变量都必须是变量”错误。但如果我没弄错的话,ws_名称是一个变体数组。有人能解释一下吗?谢谢大家!

Public Sub test12()
    Dim ws_names() As Variant
    ws_names = Array("Sheet2", "Sheet3")
    Dim ws_name As String
    For Each ws_name In ws_names()
        ThisWorkbook.Worksheets(ws_name).Visible = False
    Next ws_name
End Sub

您不需要在数组中循环

Dim ws_names() As Variant
ws_names = Array("Sheet2", "Sheet3")

Sheets(ws_names).Visible = False
您也可以使用单衬里

Sheets(Array("Sheet2", "Sheet3")).Visible = False
试试这段代码

Public Sub test12()

    Dim ws_names() As Variant
    ws_names = Array("Sheet2", "Sheet3")
    Dim ws_name As Variant
    For Each ws_name In ws_names()
        'ThisWorkbook.Worksheets(ws_name).Visible = False
        Debug.Print ws_name
    Next ws_name

End Sub
循环的语法是:对于组中的每个元素。。。下一个元素

对于集合,元素只能是变量、通用对象变量或任何特定对象变量对于数组,元素只能是变量。

因此,以下措施将起作用:

Public Sub test12()
    Dim ws_names() As Variant
    ws_names = Array("Sheet2", "Sheet3")
    Dim ws_name As Variant
    For Each ws_name In ws_names()
        ThisWorkbook.Worksheets(ws_name).Visible = False
    Next ws_name
End Sub

然而,正如@GMalc在他们的回答中指出的,这个循环甚至不需要。

ws\u name
变量声明为
字符串
,并且需要声明为
变量
。将ws\u name作为变量