スポンサーリンク

【VBA】ListObjectの取得方法|名前で取得・セル位置から取得する方法

この記事ではVBAでテーブル(ListObject)を操作するための第一歩として、ListObjectを取得する方法を紹介します。

Excel VBAでは、テーブルを扱うには必ず「ListObject」というオブジェクトを取得する必要があります。ListObjectを取得できれば、列や行を自在に操作したり、データ範囲を取得したりすることが可能になります。

ここでは、代表的な2つの方法を解説します。


スポンサーリンク

1. 名前で取得する方法

テーブルには必ず「テーブル名(Name)」が付いています。Excelでテーブルを作成した際、自動的に「Table1」「Table2」といった名前が付与されますが、管理しやすいように「売上表」「商品一覧」といった意味のある名前に変更しておくのがおすすめです。

構文:

Dim lo As ListObject
Set lo = ThisWorkbook.Sheets("Sheet1").ListObjects("売上表")
  • Sheets("Sheet1") → テーブルが存在するシートを指定
  • ListObjects("売上表") → シート内のテーブルを名前で指定

ポイント:

  • 同じシート内に複数のテーブルが存在する場合でも、名前を使えば確実に対象を取得できる
  • テーブル名は Excel の「テーブルデザイン」タブ → 左上の「テーブル名」から確認・変更可能

スポンサーリンク

2. セル位置から取得する方法

もう一つの方法は、「あるセルがテーブルの中にあるかどうか」を基準にListObjectを取得する方法です。

構文:

Dim lo As ListObject
Set lo = ThisWorkbook.Sheets("Sheet1").Range("B3").ListObject
  • Range("B3") → セルを指定
  • .ListObject → そのセルが含まれているテーブルを取得

もし B3 がテーブル内にあれば、そのテーブルの ListObject が返されます。テーブル外のセルを指定するとエラーになるため注意が必要です。

応用例:アクティブセルからテーブルを取得

Dim lo As ListObject
Set lo = ActiveCell.ListObject 'アクティブセルが含まれるテーブルを取得

この方法を使えば、ユーザーが選択している位置に応じて自動で対象のテーブルを特定できるので、汎用性の高い処理が可能です。


スポンサーリンク

3. 名前取得とセル位置取得の使い分け

方法メリットデメリット適した場面
名前で取得確実に特定できる名前が分からないと使えない特定のテーブルを操作するマクロ
セル位置で取得ユーザー操作に柔軟に対応できる範囲外セルだとエラーになる汎用ツール・選択セルに応じた処理

スポンサーリンク

4. まとめ

  • ListObjectの取得はVBAでテーブルを操作する第一歩
  • 方法は「テーブル名で取得」と「セル位置から取得」の2種類
  • 名前で取得 → 固定的に確実に扱える
  • セル位置で取得 → 動的に、ユーザー操作に応じた処理が可能

コメント

タイトルとURLをコピーしました