下面的代码给我“对于数组上的每个控制变量必须为Variant”错误。但是,如果我没有记错的话,ws_names是一个变量数组。有人可以解释一下吗?谢谢!
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
答案 0 :(得分:3)
您不需要遍历数组
Dim ws_names() As Variant
ws_names = Array("Sheet2", "Sheet3")
Sheets(ws_names).Visible = False
您也可以使用一根衬纸
Sheets(Array("Sheet2", "Sheet3")).Visible = False
答案 1 :(得分:2)
尝试这段代码
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
答案 2 :(得分:2)
For Each...Next Statement循环的语法是:对于组中的每个 element ...下一个 element
对于集合,element只能是Variant变量,通用对象变量或任何特定的对象变量。 对于数组,元素只能是Variant变量。
因此,以下方法将起作用:
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在他们的答案中指出的那样,对此循环甚至没有必要。