Vba 循环浏览Excel表格

Vba 循环浏览Excel表格,vba,excel,Vba,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).

我有下面的代码,我希望它在工作簿的其他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
Sub-DeleteEmptyRows()
将ws设置为工作表
作为字符串的Dim stresearch
暗淡的光线和长的一样
strSearch=“ressort”
对于此工作簿中的每个ws.Sheets
如果(ws.Name“Sheet1”)和(ws.Name“Sheet2”)以及(ws.Name“Sheet3”),则
与ws
lRow=.Range(“A”&.Rows.Count).End(xlUp).Row
带.Range(“A1:A”和lRow)
.AutoFilter字段:=1,标准1:=“=*”&strSearch&“*”
.Offset(1,0).特殊单元格(xlCellTypeVisible).EntireRow.Delete
以
ws.Range(“$A$1:$P$65536”)。自动筛选字段:=1
以
如果结束
下一个
端接头

因此,如果工作表名称是Sheet1、Sheet2或Sheet3,则将跳过它们。

您的代码需要存储在模块中,而不是包含在工作表中。以下插图说明了循环的工作原理:

Sub test()

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


End Sub

我可以添加一个例外吗?我有3张工作表,我不想在上面运行宏。@adp确定让我快速调整答案嘿,我能让它忽略其他工作表吗?我有3张我不想在上面运行的工作表。是的-您可以使用thisSheet.CodeName或thisSheet.Name来获取工作表的名称(小心,这两个名称可能不同)。一旦获得了工作表的名称,就可以使用if语句过滤掉不希望在其上运行的三个工作表。