お久しぶりです。管理人のTomです。いつもアクセスしていただき、ありがとうございます。本年もよろしくお願いいたします。
以前、Excelにおいてテーブル機能を使うと便利ですというものを紹介しました。
今回はVBAを使ってテーブルの取得、テーブルのセル範囲の取得、テーブルの見出しの範囲の取得、テーブルの見出し以外の範囲を取得してみたいと思います。
テーブルの取得
テーブルの取得はListObjectsプロパティを使用します。
のような感じで使用します。
例として、Worksheet(baseballというシート名にします。)上にある”T_dragons”というテーブルを取得してみます。
Sub テーブルの取得() Dim tbl As ListObject Set tbl = Worksheets("baseball").ListObjects("T_dragons") End Sub
Setというのは、セルやワークシートなどのオブジェクトを変数に格納するためのステートメントです。ここでは、T_dragonsというテーブル(Listobjectオブジェクト)を変数に格納しています。
テーブルの範囲の取得
上記のコードで、テーブルの取得ができました。次は、このテーブルの範囲を取得して、メッセージボックスに表示させてみます。
Sub テーブルのセル範囲の取得() Dim tbl As ListObject Set tbl = Worksheets("baseball").ListObjects("T_dragons") MsgBox tbl.Range.Address, , "テーブルの範囲" End Sub
Rangeプロパティを使用して、テーブル全体の範囲を取得しています。
Msgboxの一つ目の引数に、メッセージボックスに表示させたい内容、3つ目の引数にメッセージボックス上部に表示されるタイトルを入力しています。
テーブルの見出しの範囲を取得
今度は、テーブルの見出しの範囲をメッセージボックスに表示させてみます。
テーブルの見出しの範囲を取得するには、HeaderRowRangeプロパティを使用します。
Sub テーブルの見出しの範囲の取得() Dim tbl As ListObject Set tbl = Worksheets("baseball").ListObjects("T_dragons") MsgBox tbl.HeaderRowRange.Address, , "テーブルの見出しの範囲" End Sub
テーブルの見出し以外の範囲を取得
最後にテーブルの見出し以外の範囲を取得してみます。
テーブルの見出し以外の範囲を取得するには、DataBodyRangeプロパティを使用します。使い方は上記と全く同じです。
Sub テーブルの見出し以外の範囲を取得() Dim tbl As ListObject Set tbl = Worksheets("baseball").ListObjects("T_dragons") MsgBox tbl.DataBodyRange.Address, , "見出し以外の範囲" End Sub
まとめ
ListObjectsプロパティでテーブルを取得、セル範囲全体を取得したいときはRangeプロパティ、見出しの範囲を取得したいときは HeaderRowRangeプロパティ 、見出し以外の範囲を取得したいときは、 DataBodyRangeプロパティを使用します 。
またどこかで、テーブルの行や列に関する操作を書きたいと思います。