Excel 使用数组跳过特定图纸
我是vba新手,正在尝试使用vba代码检查Excel 使用数组跳过特定图纸,excel,vba,Excel,Vba,我是vba新手,正在尝试使用vba代码检查数组中的工作表名称,如果名称与工作表名称匹配,则跳过该工作表。但是,代码不起作用,它会跳过与数组长度相等的表。此外,是否可以将“if-Then-else”与数组一起使用 此代码将遍历数组中的工作表,并在即时窗口中列出每个工作表的名称,除非在运行代码时它是活动工作表 Dim Ws As Worksheet Dim a As Long Dim WsName As Variant WsName = Array("Sheet1", "Sheet2", "Sh
数组
中的工作表名称,如果名称与工作表名称匹配,则跳过该工作表。但是,代码不起作用,它会跳过与数组长度相等的表。此外,是否可以将“if-Then-else”与数组一起使用
此代码将遍历数组中的工作表,并在即时窗口中列出每个工作表的名称,除非在运行代码时它是活动工作表
Dim Ws As Worksheet
Dim a As Long
Dim WsName As Variant
WsName = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")
For a = LBound(WsName) To UBound(WsName)
Set Ws = Worksheets(WsName(a))
If Not Ws Is ActiveSheet Then
Debug.Print Ws.Name
End If
Next a
如果工作表不存在,则会出现错误。如果需要查看阵列,我建议如下:
For Each ws In ThisWorkbook.Worksheets(wsname)
甚至直接:
For Each ws In ThisWorkbook.Worksheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5"))
它可能如下所示:
Sub Test()
Dim ws As Worksheet
Dim wsname As Variant: wsname = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")
For Each ws In ThisWorkbook.Worksheets(wsname)
If Not ws Is ActiveSheet Then
'Do Something
End If
Next ws
End Sub
然而,使用ActiveSheet
(以及原始帖子中的.Activate
)几乎是不需要的,也不推荐使用 欢迎来到SO。代码不起作用。这可能是描述问题的最糟糕的方式之一。请参阅,谢谢您的帮助。。它真的很有用。我肯定会记住您关于使用ActiveSheet
Sub Test()
Dim ws As Worksheet
Dim wsname As Variant: wsname = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")
For Each ws In ThisWorkbook.Worksheets(wsname)
If Not ws Is ActiveSheet Then
'Do Something
End If
Next ws
End Sub