Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » アクティブでない別シートのListObjectを取得したい

アクティブでない別シートのListObjectを取得したい

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「別シートの listobject」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、アクティブになっていない別のシートのListObjectオブジェクトを取得するには、どのようなコードを書けばいいのかを探していた方による検索キーワードでしょうか。

[スポンサードリンク]

シート名を指定してListObjectを取得するサンプルマクロ

簡単なマクロをご紹介しておきましょう。

「マスタ」という名前のワークシート上にテーブルが存在するときに、以下のマクロを実行すると、「マスタ」シート上の1つ目のListObjectオブジェクトの名前(テーブル名)がメッセージボックスに表示されます。

Sub シート名を指定してListObjectを取得する()

 MsgBox _
   Sheets("マスタ").ListObjects(1).Name

End Sub

ListObjectsコレクションオブジェクトは、Worksheetオブジェクトの子オブジェクトに該当しますから、

アクティブでない別シートのListObjectを取得したい

Worksheetを取得するオブジェクト式から書けばいいわけです。

「別シートの listobject」
という検索をなさったということは、アクティブシート上のListObjectを取得するオブジェクト式はご存じのはずです。
アクティブなシートの1つ目のListObjectオブジェクトを取得する場合、「ActiveSheet.ListObjects(1)」といったオブジェクト式を書きます。
アクティブなWorksheetオブジェクトを取得するActiveSheetプロパティを、上記のマクロのようにSheetsプロパティを使ったオブジェクト式にすれば、シート名を指定してListObjectsを取得できます。

Sheetsプロパティではなく、Worksheetsプロパティを使って「Worksheets("マスタ").ListObjects(1)」でもOKです。

インデックス番号を指定してListObjectを取得するサンプルマクロ

シート名ではなく、シートのインデックス番号を指定することも、もちろん可能です。

Sub インデックス番号を指定してListObjectを取得する()

 MsgBox _
   Sheets(1).ListObjects(1).Name

End Sub

1番左シート上に、テーブル・ListObjectオブジェクトが存在するときに上記のマクロを実行すると、1番左のシート上の1つ目のListObjectオブジェクトの名前がメッセージボックスに表示されます。

オブジェクトの階層構造を頭に叩き込みましょう

「別シートの listobject」
という検索をなさった方は、おそらくオブジェクトの階層構造を理解できていないのでしょう。はっきり言ってしまえば、Excelマクロを作るときに、コピペで済ませてらっしゃるのだろうと想像します。

ListObjectオブジェクトを扱うマクロを作るのなら、最低、
  Applicationオブジェクト
   └Workbookオブジェクト
     └Worksheetオブジェクト
       └ListObjectsコレクションオブジェクト
         └ListObjectオブジェクト
という階層関係を、オブジェクトブラウザーを使ったり、階層関係図を自分で書いたりして、自分の頭に叩き込みましょう。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » アクティブでない別シートのListObjectを取得したい

「ListObjectオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.