2

最初に、検索に時間を費やしたので、私の質問がすでに他の場所で回答されている場合は、お詫びしたいと思います。

シートで2つのマクロを使用しています(非常に単純なマクロ...テーブルをフィルタリングします)。このシートは毎週使用されるテンプレートです。シートをコピーして新しいシートを作成すると、マクロが機能しなくなります。私が受け取るエラーはランタイムエラー9です。添え字が範囲外です。VBAコード(実際にVBAを学習したことはありません)を調べたところ、テーブルのタイトルを参照していることがわかりました。特定のテーブルではなく、そのテーブルに含まれるセルを参照するようにこれを修正する方法はありますか?タイトル名の例:

ActiveSheet.ListObjects("Table1619").Range.AutoFilter Field:=1

のセル範囲からデータにアクセスしたいA103:A113。私はこれを試しました:

ActiveSheet.ListObjects.Range("$A$103:$A$113").AutoFilter Field:=1

これも機能しませんでしたが、私が受け取ったエラーは異なっていました。"Run-time error '438': Object doesn't support this property or method"

すべてのシートで同じテーブル名を使用する方法があればうまくいくと思いますが、私の限られた調査では、これが不可能であるという方向に私を向けているようです。

4

2 に答える 2

2

このように参照することは不可能ですActiveSheet.ListObjects.Range("$A$103:$A$113")-最初のサンプルで上記のように、またはテーブルを通常の範囲に変換してからを使用しますActiveSheet.Range("$A$103:$A$113")

于 2013-02-15T21:36:13.653 に答える
2

あなたが直面している問題は、テーブル/リストオブジェクトを介して範囲にアクセスすることです-しかし、各テーブルは一意の名前を持っている必要があるため、リストオブジェクトはコピー中に名前を変更します。解決策は単純です-名前でListObjectにアクセスする代わりに、ワークシートのインデックスを使用するだけです-変更されません。したがって、交換してください

ActiveSheet.ListObjects( "Table1619")。Range.AutoFilter Field:= 1

ActiveSheet.ListObjects(1).Range.AutoFilter Field:= 1
(ワークシートの唯一/最初のテーブルであると想定しています。)

于 2013-02-15T22:48:41.203 に答える