1

1 ページ = 1 年の 1 か月に分割されたワークブックがあります。これらの各シートには、さまざまな条件付き書式が設定されたテーブルがあります。そこから、情報をいくつかの方法でフィルタリングして、特定の情報を取得します (未払いの残高、発送待ちのアイテムなど)。

フィルタリングを高速化するためにいくつかの単純なマクロをセットアップしようとしています。

私の問題は、マクロは作成したシート/テーブルにのみ適用されることです.vbコードを書き換えて、ワークブックのすべてのシート/テーブルでマクロを機能させることはできますか?

これはマクロの 1 つの例です。このフォーラムにコードを挿入するためのプロトコルがある場合は申し訳ありません。

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
4

2 に答える 2

0

探しているキーはActiveSheetです。これにより、目の前に表示されているシートにのみオートフィルターが適用されます。各シートにリンクできるオブジェクトを変更する場合は、それを各シートに順番に適用できます。

すべてのシートにリストが 1 つしかない場合、名前の代わりに最初の 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
于 2013-03-15T14:56:00.520 に答える
0

を参照しているため、マクロはそれを行う必要があるように見えるActiveSheetため、現在のどのシートでも機能するはずです。

そうでない場合は、ListObjects("Table25").Range参照が原因です-次のように変更することをお勧めしますUsedRange

コードは次のようになります。

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

あなたのシート/レイアウトを見なくても、それが私が提供できる最も近い解決策です.

お役に立てれば。

于 2013-03-15T14:57:53.610 に答える