VBA:用于数组的For循环给出错误
下面的代码给出了“数组上的每个控制变量都必须是变量”错误。但如果我没弄错的话,ws_名称是一个变体数组。有人能解释一下吗?谢谢大家!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
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作为变量