首页 > 解决方案 > Excel VBA 在 50 张纸上运行宏

问题描述

在 excel VBA 中,我试图在 50 张纸上运行一个简单的自动过滤器,但是,它只在一张纸上运行。任何人都可以帮忙吗?代码如下:

Sub Macro2()
'
' Macro2 Macro
'

Dim wb As Workbook
   For Each wb In Application.Workbooks
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.AutoFilter
    Selection.End(xlToLeft).Select
    Range("G1").Select
    ActiveSheet.Range("$A$1:$AC$91").AutoFilter Field:=7, Criteria1:=Array("11" _
        , "21", "22", "23", "31-33", "42", "44-45", "48-49", "51", "52", "53", "54", "55", "56", "61" _
        , "62", "71", "72", "81"), Operator:=xlFilterValues
    Selection.End(xlToLeft).Select
    Next wb
End Sub

标签: vbaexcel

解决方案


您的代码很接近,但是...您正在遍历workbook. 相反,application您想遍历worksheet. workbook此外,您在这里拥有所有这些随机.Select代码。你不需要它。您只需要在每个工作表中自动过滤一个范围:

Sub Macro2()
'
' Macro2 Macro
'

Dim ws As Worksheet
   For Each ws In ThisWorkbook.Worksheets        
      ws.Range("A1:AC91").AutoFilter Field:=7, Criteria1:=Array("11" _
        , "21", "22", "23", "31-33", "42", "44-45", "48-49", "51", "52", "53", "54", "55", "56", "61" _
        , "62", "71", "72", "81"), Operator:=xlFilterValues        
    Next ws
End Sub

现在很好很简单,因为每一行都很清楚。1) 循环浏览当前工作簿中的每个工作表 ( thisworkbook)。2) 对 应用自动过滤器A1:AC91


推荐阅读