我有以下代码可以删除' ACHAL'工作表,其中在列M和列A之间找到匹配'存档'工作表。
我需要为所有工作表运行相同的脚本,但是,我的工作簿由几个工作表组成,其中工作表名称将经常更改;所以我不想将工作表名称添加到代码中。
在工作簿中,我有2个具有常量工作表名称的工作表(这些工作表名称不会更改),除了“所有数据”之外,代码还需要在所有工作表上运行。和'存档'。
是否有一种循环代码的方法,以便它可以在所有工作表上运行,而不是“所有数据”。和'存档'。代码在最后一个工作表上运行后需要停止。
Sub ArchiveMatch()
Dim LR As Long, i As Long
With Sheets("ACHAL")
LR = .Range("M2:M" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
If IsNumeric(Application.Match(.Range("A" & i).Value, Sheets("Archive").Columns("A"), 0)) Then .Rows(i).Delete
Next i
End With
End Sub
答案 0 :(得分:3)
您可以遍历所有工作表,然后检查当前工作表是不是所有数据或存档,如下所示:
Sub ArchiveMatch()
Dim LR As Long, i As Long
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> "All Data" And sh.Name <> "Archive" Then
LR = sh.Range("M2:M" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
If IsNumeric(Application.Match(sh.Range("A" & i).Value, Sheets("Archive").Columns("A"), 0)) Then sh.Rows(i).Delete
Next i
End If
Next sh
End Sub
答案 1 :(得分:1)
您可以使用以下内容循环所有工作表:
Sub Main()
Dim i As Integer
For i = 1 To Sheets.Count
Sheets(i).Activate
Next
End Sub
如果您有一张或多张工作表的例外情况,请与此Sheets(i).Name
希望它有效。