通过Excel表格循环

我有下面的代码,我希望它在其他25张工作簿中运行,而不是重复25次代码,对于每个工作表是否有办法让它循环?

有人可以协助吗?

Sub DeleteEmptyRows() Dim ws As Worksheet Dim strSearch As String Dim lRow As Long strSearch = "ressort" Set ws = Sheets("01,02,03") With ws lRow = .Range("A" & .Rows.Count).End(xlUp).Row With .Range("A1:A" & lRow) .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ActiveSheet.Range("$A$1:$P$65536").AutoFilter Field:=1 End With End Sub 

将处理代码封装在一个循环中

 for each ws in thisworkbook.sheets ' do something on each worksheet next 

 Sub DeleteEmptyRows() Dim ws As Worksheet Dim strSearch As String Dim lRow As Long strSearch = "ressort" For Each ws In ThisWorkbook.Sheets If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet3") Then With ws lRow = .Range("A" & .Rows.Count).End(xlUp).Row With .Range("A1:A" & lRow) .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ws.Range("$A$1:$P$65536").AutoFilter Field:=1 End With End If Next End Sub 

所以现在如果工作表名称是Sheet1或Sheet2或Sheet3,他们将被跳过。

您的代码将需要存储在一个模块中,而不是包含在表单中。 以下说明循环如何工作:

 Sub test() Dim thisSheet As Worksheet For Each sheet In Sheets thisSheet.Cells(1, 1) = 1 Next End Sub