我有以下代码,我希望它删除包含某些特定文本的所有行,例如"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
答案 0 :(得分:2)
您可以迭代Sheets
集合,如下所示。确保您使用工作表变量(Range
,以下)限定每次调用Cells
,sh
等,否则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