我的工作簿分为一页=一年中的一个月。 每张纸上都有一张表格,上面有各种条件格式。 从那里我过滤信息的几种方式来获取某些信息,(未结余额,等待发送的项目等)
我正在尝试设置一些简单的宏来加快过滤速度,例如只显示来自特定公司的订单,这些订单已经发送但未付款。
我的问题是,宏只适用于我在其上创建的工作表/表格,是否可以重新编写vb代码以使宏在我的工作簿的所有工作表/表格中工作?
这是其中一个宏的示例,对不起,如果在此论坛上有插入代码的协议,我恳求无知。
Sub HSWC_only()
'
' HSWC_only Macro
' leaves only hi-spec jobs
'
' Keyboard Shortcut: Ctrl+m
'
ActiveSheet.ListObjects("Table25").Range.AutoFilter Field:=3, Criteria1:= _
"=HSWC*", Operator:=xlAnd
End Sub
答案 0 :(得分:0)
您正在寻找的密钥是ActiveSheet
,现在只将Autofilter应用于您在您面前看到的工作表。如果您要更改可以链接到每个工作表的对象,则可以按顺序将其应用于每个工作表。
现在当你的工作表都只有一个List时,你可以引用第一个ListObject而不是它的名字。
如果您将这一行放在Loop
这样:
Sub HSWC_only()
'
'HSWC_only Macro
' leaves only hi-spec jobs
'
' Keyboard Shortcut: Ctrl+m
'
Dim ws as Worksheet
For each ws in ThisWorkbook.Worksheets
ws.ListObjects(1).Range.AutoFilter Field:=3, Criteria1:= _
"=HSWC*", Operator:=xlAnd
Next ws
End Sub
答案 1 :(得分:0)
看起来您的宏应该这样做,因为它引用ActiveSheet
,因此它应该适用于您当前所在的任何工作表。
如果它不是因为ListObjects("Table25").Range
引用 - 您可能希望将其更改为UsedRange
您的代码看起来像是:
ActiveSheet.UsedRange.AutoFilter Field:=3, Criteria1:= _
"=HSWC*", Operator:=xlAnd
如果没有看到您的工作表/布局,那就是我能为解决方案提供的最接近的工作。
希望这有帮助。