Excel 使用VBA循环浏览具有特定名称的图纸
我试图构建一个宏来运行一个文件,并为每个名为“file-n”的工作表打开一个userform,其中n是一个整数。我尝试过此代码,但不起作用:Excel 使用VBA循环浏览具有特定名称的图纸,excel,vba,worksheet,Excel,Vba,Worksheet,我试图构建一个宏来运行一个文件,并为每个名为“file-n”的工作表打开一个userform,其中n是一个整数。我尝试过此代码,但不起作用: Dim WS As Worksheet Dim indx As Integer For Each WS In ThisWorkbook.Worksheets WS.Activate If WS.Name = "File-" & indx Then WS.Select userform1.show
Dim WS As Worksheet
Dim indx As Integer
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If WS.Name = "File-" & indx Then
WS.Select
userform1.show
End If
Next WS
此宏无法识别任何图纸。下面的代码是有效的,但我希望如果可能的话能把它清理干净。我不喜欢列出多达30张的潜在数量
If WS.Name = "File-0" or WS.Name = "File-1" or WS.Name = "File-2" or ... Then
为indx再添加一个循环
Dim WS As Worksheet
Dim indx As Integer
For i = 1 to 30
indx = i
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If WS.Name = "File-" & i Then
userform1.show
End If
Next WS
Next i
为indx再添加一个循环
Dim WS As Worksheet
Dim indx As Integer
For i = 1 to 30
indx = i
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If WS.Name = "File-" & i Then
userform1.show
End If
Next WS
Next i
您可以像@BigBen在评论中提到的那样使用
Like
,也可以像下面那样使用Instr
:
Option Explicit
Sub test()
Dim WS As Worksheet
Dim indx As Integer
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If InStr(1, LCase(WS.Name), "file") Then
WS.Select
UserForm1.Show
End If
Next WS
End Sub
您可以像@BigBen在评论中提到的那样使用
Like
,也可以像下面那样使用Instr
:
Option Explicit
Sub test()
Dim WS As Worksheet
Dim indx As Integer
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If InStr(1, LCase(WS.Name), "file") Then
WS.Select
UserForm1.Show
End If
Next WS
End Sub
看看下面的代码是否有用
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If WS.Name Like "File-*" Then
WS.Select
userform1.show
End If
Next WS
看看下面的代码是否有用
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
WS.Activate
If WS.Name Like "File-*" Then
WS.Select
userform1.show
End If
Next WS
可能是一个更容易的方法-你有任何一个名字从“代码>文件”开始的文件“< /代码>,你不想考虑吗?@ BigBo.No,所有的文件名为“文件”在这种情况下都是相关的,然后只使用<代码> ISTR < /代码>(见张贴的答案),“或代码< >左< /代码>。尽量避免<代码>。激活< <代码> >代码>如果用户不明确需要,请选择< /代码> -C.F可能是一个更容易的方法-是否有任何以“代码>开始”的文件-“< <代码> >,您不想考虑?@ BigBo.No,所有名为“文件”的表。在这种情况下是相关的。然后只需使用
InStr
(参见张贴的答案)或Left
偶数。尽量避免。激活和。如果用户通信没有明确需要,请选择-c.f。这会将每个工作表与增量indx编号进行比较,所以我怀疑它会像预期的那样工作…@Xabier谢谢你指出这一点。我知道错在哪里了!我已经更正了代码。这会将每个工作表与增量indx编号进行比较,因此我怀疑它是否会像预期的那样工作…@Xabier感谢您指出这一点。我知道错在哪里了!我已经更正了代码。如果要执行此方法,则外部循环应该是工作表循环,内部循环应该是I
。但是它的效率非常低,而且还有更好的方法。如果你采用这种方法,那么外部循环应该是工作表循环,而内部循环应该是i
。但是这是非常低效的,还有更好的方法。