「別シートの listobject」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、アクティブになっていない別のシートのListObjectオブジェクトを取得するには、どのようなコードを書けばいいのかを探していた方による検索キーワードでしょうか。
シート名を指定してListObjectを取得するサンプルマクロ
簡単なマクロをご紹介しておきましょう。
「マスタ」という名前のワークシート上にテーブルが存在するときに、以下のマクロを実行すると、「マスタ」シート上の1つ目のListObjectオブジェクトの名前(テーブル名)がメッセージボックスに表示されます。
MsgBox _
Sheets("マスタ").ListObjects(1).Name
ListObjectsコレクションオブジェクトは、Worksheetオブジェクトの子オブジェクトに該当しますから、
Worksheetを取得するオブジェクト式から書けばいいわけです。
「別シートの listobject」
という検索をなさったということは、アクティブシート上のListObjectを取得するオブジェクト式はご存じのはずです。
アクティブなシートの1つ目のListObjectオブジェクトを取得する場合、「ActiveSheet.ListObjects(1)」といったオブジェクト式を書きます。
アクティブなWorksheetオブジェクトを取得するActiveSheetプロパティを、上記のマクロのようにSheetsプロパティを使ったオブジェクト式にすれば、シート名を指定してListObjectsを取得できます。
Sheetsプロパティではなく、Worksheetsプロパティを使って「Worksheets("マスタ").ListObjects(1)」でもOKです。
インデックス番号を指定してListObjectを取得するサンプルマクロ
シート名ではなく、シートのインデックス番号を指定することも、もちろん可能です。
MsgBox _
Sheets(1).ListObjects(1).Name
1番左シート上に、テーブル・ListObjectオブジェクトが存在するときに上記のマクロを実行すると、1番左のシート上の1つ目のListObjectオブジェクトの名前がメッセージボックスに表示されます。
オブジェクトの階層構造を頭に叩き込みましょう
「別シートの listobject」
という検索をなさった方は、おそらくオブジェクトの階層構造を理解できていないのでしょう。はっきり言ってしまえば、Excelマクロを作るときに、コピペで済ませてらっしゃるのだろうと想像します。
ListObjectオブジェクトを扱うマクロを作るのなら、最低、
Applicationオブジェクト
└Workbookオブジェクト
└Worksheetオブジェクト
└ListObjectsコレクションオブジェクト
└ListObjectオブジェクト
という階層関係を、オブジェクトブラウザーを使ったり、階層関係図を自分で書いたりして、自分の頭に叩き込みましょう。
Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » アクティブでない別シートのListObjectを取得したい