Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » DataBodyRangeの列を取得・選択する

動作検証バージョン:64ビット版Windows上の32ビット版Excel(バージョン1909 ビルド12026.20264)

「databodyrange 列選択」
という検索キーワードでのアクセスに気が付きました。

ListObjectオブジェクト内の、(見出し行と集計行を除いた)データ部分を表すDataBodyRangeの、列を選択するコードを探していらしたのでしょうか。

[スポンサードリンク]

DataBodyRangeの列を確認するマクロ

以下のSubプロシージャが参考になるはずです。


Sub DataBodyRangeの列を確認する()
 With ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)
  .Select
  MsgBox .Address(False, False)
 End With
End Sub

アクティブなワークシートにテーブルを作成しておいてから、上記のSubプロシージャを実行してください。

アクティブシートの、
  With ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)

1つ目のテーブルの、
  With ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)

データ部分の、
  With ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)

1列目が、
  With ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)

選択されて、
   .Select

そのセル番地がメッセージボックスに表示されます。
   MsgBox .Address(False, False)

もちろん「With ActiveSheet.ListObjects(1).DataBodyRange.Columns(2)」とすれば、2列目が選択され、そのセル番地がメッセージボックスに表示されます。

DataBodyRangeのColumnを取得するコード

オブジェクトブラウザーで確認できるとおり、テーブルを表すListObjectオブジェクトが持つDataBodyRangeプロパティは、テーブルのデータ部分のみを表すRangeオブジェクトを返します。

Rangeオブジェクトが持つColumnsプロパティを使えば、

セル範囲のすべての列を表すRangeオブジェクトが取得できるので、その既定プロパティに「1」を指定して1列目を取得しています。

列のDataBodyRangeを確認するサンプルマクロ

「DataBodyRangeの列」を取得するというコードをご紹介しましたが、実は「列のDataBodyRange」を取得するという考え方でもコードを書けます。


Sub 列のDataBodyRangeを確認する()
 With ActiveSheet.ListObjects(1).ListColumns(1).DataBodyRange
  .Select
  MsgBox .Address(False, False)
 End With
End Sub

先にご紹介した「DataBodyRangeの列」の場合は
  With ActiveSheet.ListObjects(1).DataBodyRange.Columns(1)
と、先にテーブルのデータ部分のみを表すRangeオブジェクトを取得してから、列を取得していました。

これに対して、「列のDataBodyRange」を取得する考え方の場合は、列を取得してからデータ部分です。

ListColumnsプロパティとListColumnsコレクションの既定プロパティでテーブルの列を表すListColumnオブジェクトを取得しておいてから、
  With ActiveSheet.ListObjects(1).ListColumns(1).DataBodyRange

ListColumnオブジェクトに用意されているDataBodyRangeプロパティで、
  With ActiveSheet.ListObjects(1).ListColumns(1).DataBodyRange

列のデータ部分だけを取得しています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » DataBodyRangeの列を取得・選択する

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » DataBodyRangeの列を取得・選択する

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

検索


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

.