在单个工作簿中循环Excel表单

时间:2015-07-26 13:08:29

标签: vba excel-vba excel

我有以下代码,我希望它删除包含某些特定文本的所有行,例如"Statement No****",后跟任何文本。我想为工作簿中的每个工作表执行此操作。

我的问题是下面的代码只适用于活动标签,而不适用于其他标签。

请帮助我,以便它自动遍历所有工作表。

Sub doit()

    Application.DisplayAlerts = False

    Dim i As Integer
    Dim r As Long, lr As Long
    Dim x As Integer

    x = Sheets.Count

    For i = x To 1 Step -1

        lr = Cells(Rows.Count, 1).End(xlUp).row
        For r = lr To 1 Step -1
            If InStr(Cells(r, 1), "Statement No") = 0 Then Rows(r).Delete
        Next r

    Next i

    Application.DisplayAlerts = True

End Sub 

1 个答案:

答案 0 :(得分:2)

您可以迭代Sheets集合,如下所示。确保您使用工作表变量(Range,以下)限定每次调用Cellssh等,否则Excel将只使用活动工作表。

 Dim sh As Worksheet
 For Each sh In Sheets

    lr = sh.Cells(sh.Rows.Count, 1).End(xlUp).row
    For r = lr To 1 Step -1
        If InStr(sh.Cells(r, 1), "Statement No") = 0 Then sh.Rows(r).Delete
    Next r

 Next