跳过一个工作表并处理剩余的工作表

时间:2015-09-02 11:23:40

标签: vba excel-vba excel

我正在使用vba代码删除所有没有字的行" Statement No"从所有可用的工作表中。但无论如何,我希望它跳过第一个工作表并继续从所有其他工作表中删除行。

如果您可以帮助我使用以下代码,以便它跳过第一个工作表。

Sub doit()

Application.DisplayAlerts = False

Dim r As Long, lr As Long
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

Application.DisplayAlerts = True

End Sub

谢谢大家!

2 个答案:

答案 0 :(得分:0)

只需通过检查每个工作表名称告诉它忽略工作表:

Sub doit()

    Application.DisplayAlerts = False

    Dim r As Long, lr As Long
    Dim sh As Worksheet

    For Each sh In Sheets
        If sh.Name <> "IgnoreThisSheet" Then
            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
        End If
    Next

    Application.DisplayAlerts = True

End Sub

编辑:您可能还想在For Each循环中将Sheets更改为WorkSheets。工作表包含行,列等。工作表可以是图表工作表,宏工作表或对话框工作表。 http://blogs.msdn.com/b/frice/archive/2007/12/05/excel-s-worksheets-and-sheets-collection-what-s-the-difference.aspx

答案 1 :(得分:0)

如果工作表名称总是相同,那么你可以使用它..

If sh.Name <> "Sheet 1" Then ' Or whatever the sheet is called
   .. more code
End If