在多个工作表的多个表上使用一个macros

我有一个工作簿是分裂一页=一年的一个月。 在这些表中的每一个上是一个表格,其上有各种条件格式。 从那里我过滤信息几种方式获得某些信息,(未清余额,等待发货等项目)

我试图设置一些简单的macros来使过滤更快,例如只显示来自特定公司的,已经派发但未付款的订单。

我的问题是,macros只适用于我创build它的表/表,是否可以重新编写vb代码,使macros在我的工作簿的所有表/工作表上工作?

这是一个macros的例子,抱歉,如果有在这个论坛插入代码的协议,我恳求无知。

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 

它看起来像你的macros应该这样做,因为它引用了ActiveSheet ,所以它应该在你当前所在的任何工作表上工作。

如果它不是由于ListObjects("Table25").Range引用 – 你可能想要改变它沿着UsedRange

你的代码看起来像是:

 ActiveSheet.UsedRange.AutoFilter Field:=3, Criteria1:= _ "=HSWC*", Operator:=xlAnd 

没有看到您的表/布局,这是我能提供给解决scheme的最接近的。

希望这可以帮助。

您正在寻找的关键是ActiveSheet ,现在只会将自动筛选器应用于您在前面看到的工作表。 如果你想改变一个对象,你可以链接到每个工作表,你可以将它应用到每个工作表。

现在当你的工作表都只有一个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