「エクセル vba テーブル bodyrange」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。
BodyRangeというオブジェクト・プロパティ・メソッドは存在しない
オブジェクトブラウザーで「bodyrange」を検索しても、BodyRangeという名前のオブジェクト・プロパティ・メソッドは見当たりませんが、DataBodyRangeプロパティが、ListObjectオブジェクトに存在します。
「エクセル vba テーブル bodyrange」
という検索は、このListObject.DataBodyRangeプロパティについて調べていらしたのでしょうか。
ListObject.DataBodyRangeを使ったサンプルマクロ
詳細がわかりませんので、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プロパティは、Rangeオブジェクトを返します。
ですから上記のマクロは結局、RangeオブジェクトのSelectメソッドで選択を行い、RangeオブジェクトのAddressプロパティでセル番地を取得し、RangeオブジェクトのRowsプロパティで行を表すRangeオブジェクトを取得してそのCountプロパティで行数を取得しているわけです。
最終更新日時:2019-10-23 13:59
Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObjectのDataBodyRangeを確認する