【ExcelVBA】VBAを使ってExcelのテーブルを操作してみる(1)

お久しぶりです。管理人のTomです。いつもアクセスしていただき、ありがとうございます。本年もよろしくお願いいたします。

以前、Excelにおいてテーブル機能を使うと便利ですというものを紹介しました。

Excelには、便利なテーブルという機能があります。 このテーブル機能のどういうところが便利かというと、ひとつは、一行毎に色を付けた表を作ることができます...

今回はVBAを使ってテーブルの取得、テーブルのセル範囲の取得、テーブルの見出しの範囲の取得、テーブルの見出し以外の範囲を取得してみたいと思います。

テーブルの取得

テーブルの取得はListObjectsプロパティを使用します。

Worksheetオブジェクト.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プロパティを使用します 。

またどこかで、テーブルの行や列に関する操作を書きたいと思います。


スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする