【问题标题】:Loop through Excel Sheets循环浏览 Excel 表格
【发布时间】:2013-12-06 11:08:00
【问题描述】:

我有以下代码,我希望它在工作簿的其他 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    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,它们将被跳过。

    【讨论】:

    • 我可以添加例外吗?我有 3 张不希望在其上运行宏的工作表。
    • @adp 确定让我快速调整答案
    【解决方案2】:

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

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

    【讨论】:

    • 嘿,我可以让它忽略其他工作表吗?我有 3 张纸,我不想让它在上面运行。
    • 是的 - 您可以使用 thisSheet.CodeName 或 thisSheet.Name 来获取工作表的名称(注意,两个名称可能不同)。获得工作表的名称后,您可以使用 if 语句过滤掉您不希望在其上运行的三张工作表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2020-10-14
    • 2016-08-08
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多