Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObjectのDataBodyRangeを確認する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「エクセル vba テーブル bodyrange」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

BodyRangeというオブジェクト・プロパティ・メソッドは存在しない

オブジェクトブラウザーで「bodyrange」を検索しても、BodyRangeという名前のオブジェクト・プロパティ・メソッドは見当たりませんが、DataBodyRangeプロパティが、ListObjectオブジェクトに存在します。

ListObject・テーブルのDataBodyRangeを利用するExcelマクロ

「エクセル vba テーブル bodyrange」
という検索は、このListObject.DataBodyRangeプロパティについて調べていらしたのでしょうか。

[スポンサードリンク]

ListObject.DataBodyRangeを使ったサンプルマクロ

詳細がわかりませんので、ListObject.DataBodyRangeプロパティを使った簡単なマクロをご紹介しておきます。
Sub ListObjectのDataBodyRangeを確認する()
 With ActiveSheet.ListObjects(1).DataBodyRange
  .Select
  MsgBox .Address(False, False)
  MsgBox .Rows.Count
 End With
End Sub

ListObjectオブジェクト・テーブルの存在するワークシートがアクティブな状態で上記のマクロを実行すると、テーブルの見出し行・集計行を除いた部分が選択され、
  With ActiveSheet.ListObjects(1).DataBodyRange
   .Select

セル番地と
   MsgBox .Address(False, False)

行数が、順番にメッセージボックスに表示されます。
   MsgBox .Rows.Count

ListObject.DataBodyRangeはRangeオブジェクトを返す

オブジェクトブラウザーで確認するとわかるとおり、

ListObject・テーブルのDataBodyRangeを利用するExcelマクロ

ListObjectオブジェクトのDataBodyRangeプロパティは、Rangeオブジェクトを返します。

ですから上記のマクロは結局、RangeオブジェクトのSelectメソッドで選択を行い、RangeオブジェクトのAddressプロパティでセル番地を取得し、RangeオブジェクトのRowsプロパティで行を表すRangeオブジェクトを取得してそのCountプロパティで行数を取得しているわけです。

関連語句
listobject 見出しを除いた range

最終更新日時:2019-10-23 13:59

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObjectのDataBodyRangeを確認する

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

検索


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

.