2013-03-15 75 views
1

我有一個工作簿,其中一頁=一年中的一個月。在這些表中的每一個表上的 是具有各種條件格式的表格。 從那裏我進行信息篩選幾種方法來獲得某些信息位(未償還餘額,項目等着調度等等等等)跨多張工作表在多個表上使用單個宏

我試圖建立一些簡單的宏進行過濾更快,例如顯示僅訂單一個特定的公司,這些公司已經派出,但沒有支付。

我的問題是,這個宏只適用於我創建它的圖紙/表格,是否可以重新編寫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

你正在尋找的關鍵是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 
+0

嗨,感謝您的時間.. 我粘貼了您建議的代碼,但後來我發現該宏根本不起作用,並且出現了'運行時錯誤9-supscript超出範圍' 是它在除了宏之前創建的工作表之外的表單上引發的同一錯誤,然後再與之混淆。 – 2013-03-15 15:20:52

+0

幾乎在那裏。你必須有一個沒有listobjects的工作表。 – 2013-03-15 15:28:38

+0

如果它沒有列表對象,它會引起關於數據範圍的錯誤:( – 2013-03-15 15:42:23

0

它看起來像您的宏應該這樣做,因爲它是指ActiveSheet,所以應該對你目前所在的任何表工作。

如果沒有,那是因爲的ListObjects("Table25").Range參考 - 你可能要改變的東西沿着UsedRange

你的代碼將沿着線的東西:

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

沒有看到您的工作表/佈局,這是我能提供給解決方案的最接近的。

希望這會有所幫助。

+0

嗨, 感謝您花時間幫助我:) 不幸的是,它沒有工作.. 之前,當我嘗試在另一張表上運行宏時,它發生'運行時錯誤9-subscript超出範圍' 進行編輯後,您提示它完全不工作,並返回'錯誤1004自動過濾方法超出範圍類失敗' – 2013-03-15 15:17:47

+0

** HOPING **每頁只有一個表 - 嘗試'ActiveSheet.ListObjects(1).Range.Autofilter ...' – 2013-03-18 16:50:11