我正在尝试编写一条if语句,该命令检查当前excel选项卡与列表(存储在另一个选项卡上,在vba中手动输入列表中的列表)或其他列表,并且该语句处于循环中。如果我在VBA中手动从列表中键入一项,则一切正常,但我想不出一种方法来引用整个列表。
我尝试了一些案例,引用了一个范围,将列表手动放入直接的VBA代码中。
期望的结果是使“ ABC”为20-40个不同项目的列表。我希望避免超长或声明。为了提高效率,我希望只在某个范围内输入数据,这样我就不必在每次数据更改时都手动更新VBA。
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets 'This statement starts the loop
If ws.Name = "ABC" Then
答案 0 :(得分:0)
类似于以下代码的代码将满足您的需求(有关某些说明,请参见代码注释):
Dim ws As Worksheet
Dim SheetNamesArr As Variant
' read the sheet names array from a range in one of your sheets
SheetNamesArr = ThisWorkbook.Sheets("Sheet2").Range("A1:A10") ' <-- you can modify the range to suit your needs
For Each ws In ActiveWorkbook.Worksheets 'This statement starts the loop
' use Match to find if shee't sname is found within an array
If Not IsError(Application.Match(ws.Name, SheetNamesArr, 0)) Then
' do something if sheet's name is found
Else
' do something else >> raise an error msg
End If
Next ws