循环遍历工作表名称,如果存在...运行宏

时间:2014-03-21 06:51:21

标签: excel-vba vba excel

我正在尝试将多个宏组合成一个。

可能并不总是有相同数量的工作表,因此并非所有宏都是必需的。 因此,我试图在执行前检查“如果工作表存在”。但不幸的是,它似乎又回到了已经执行的第二个宏,并且因此失败了。

Sub Add_ALL_Totals()

Dim ws As Worksheet
Add_OPT1_Totals_inc_WFE

For Each ws In Worksheets

If ws.Name Like "*OPT2*" Then
Add_OPT2_Totals ' run this macro

End If
If ws.Name Like "*OPT3*" Then

Add_OPT3_Totals ' run this macro
End If
If ws.Name Like "*OPT4*" Then
Add_OPT4_Totals ' run this macro
End If
If ws.Name Like "*OPT5*" Then
Add_OPT5_Totals ' run this macro
End If
If ws.Name Like "*OPT6*" Then
Add_OPT6_Totals ' run this macro
End If

Next ws
End Sub

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以实现一个功能来检查工作表是否存在:

Public Function SheetExists(ByVal SheetName As String) As Boolean

Dim i As Integer
With ActiveWorkbook
    For i = 1 To Sheets.Count
        If Sheets(i).Name = SheetName Then
            SheetExists = True
            Exit Function
        End If
    Next
    SheetExists = False
End With

End Function