我正在使用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
谢谢大家!
答案 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