ES000013_VBAエキスパート(ExcelVBAスタンダード)合格講座/第十三回:テーブル

このページの内容について

このページは、VBAエキスパート(ExcelVBAスタンダード)試験合格講座の第十二回記事です。公式テキスト第8章「テーブルの操作」の内容について解説します。自分でも手を動かしながら読み進めてください。主に講座受講者の復習での利用を想定しています。

テーブル(ListObjectオブジェクト)

Excelは表のデータをデータベースのようにして扱うことができる「テーブル」という機能があります。テーブルの操作には「ListObject」というオブジェクトを使用します。

テーブルを特定する方法

テーブルを操作するためのListObjectオブジェクトを取得する方法はいくつか存在します。

Rangeのプロパティ

テーブルに含まれるセルの一つからListObjectオブジェクトを取得する方法です。

サンプルコード(クリックでコピー)
Private Sub Test_GetListObjectByRange()

Dim ws As Worksheet
Dim rng As Range
Dim list As ListObject

Set ws = ThisWorkbook.Worksheets(1)
Set rng = ws.Range("A1")
Set list = rng.ListObject

Debug.Print list.Name

End Sub
実行結果

上記サンプルコードは、マクロが動作中のブックの一番左のシートにセル「A1」を含むテーブルがあると、テーブルの名前をイミディエイトウィンドウに出力します。テーブルがない場合、エラーになります。

WorkSheetのプロパティ

WorkSheetオブジェクトは「ListObjects」コレクションを持っています。インデックスもしくはテーブルの名前でコレクションから取得することができます。インデックスで指定する場合は、テーブルが作成された順番を指定します。

サンプルコード(クリックでコピー)
Private Sub Test_GetListObjectByWorkSheet_IndexVer()

Dim ws As Worksheet
Dim rng As Range
Dim list As ListObject

Set ws = ThisWorkbook.Worksheets(1)
Set list = ws.ListObjects(1)

Debug.Print list.Name

End Sub

Private Sub Test_GetListObjectByWorkSheet_NameVer()

Dim ws As Worksheet
Dim rng As Range
Dim list As ListObject

Set ws = ThisWorkbook.Worksheets(1)
Set list = ws.ListObjects("テーブル1")

Debug.Print list.Name

End Sub
実行結果

上記サンプルコードは、マクロが動作中のブックの一番左のシートで、一番最初に作成されたテーブル、もしくは「テーブル1」というの名前のテーブルを取得し、テーブルの名前をイミディエイトウィンドウに出力します。テーブルがない場合、エラーになります。

【PR】VBAエキスパート試験対策記事

当サイトでは、オデッセイコミュニケーションズ社が運営する試験であるVBAエキスパートExcel VBA ベーシックExcel VBA スタンダード)の出題範囲をベースに用語や各種関数の解説などを行っています。試験合格に向けて必須と言われる公式テキストに沿って解説をしています。受験をするか悩んでいる方、テキストとは別視点の解説を見てみたい方、受験はしないがExcelVBA(マクロ)に興味がある方へ向けた記事です。

Comment