Excelのテーブル(ListObject)は、構造化されたデータの管理に便利ですが、「テーブル全体をVBAで取得・選択したい」といった操作を正確に実装するためには、テーブルの範囲プロパティの使い方を理解しておく必要があります。
本記事では、VBAでテーブル全体のセル範囲を取得し、選択・操作する方法をご紹介いたします。
目次
想定される活用シーン
- 指定したテーブルの全体を選択して、色付けや罫線などを一括適用したい。
- テーブルの範囲をコピーして別シートに貼り付けたい。
- テーブル全体のデータ構成を確認・検証したい。
VBAコードの例
以下のコードでは、アクティブシートに存在する「商品一覧」という名前のテーブルのセル範囲を取得し、選択状態にします。
Sub SelectEntireTable()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("商品一覧")
' テーブル全体の範囲を選択
tbl.Range.Select
End Sub
他の選択方法
1. テーブル名をセル名として参照する方法(構造化名前範囲)
Range("商品一覧").Select
※この方法は、名前定義と重複している場合や他シート参照時にエラーになることがあるため、確実性を求めるなら ListObjects("商品一覧").Range
を使うのが安心です。
2. テーブルそのものを選択する方法(※セル範囲ではない)
ActiveSheet.ListObjects("商品一覧").Select
この構文は、テーブルオブジェクトを選択状態にするためのExcel独自動作であり、VBAの範囲オブジェクトとしての操作にはあまり向きません。
よく使うプロパティ
プロパティ名 | 説明 |
---|---|
.Range | テーブル全体のセル範囲(ヘッダー+データ+集計行) |
.DataBodyRange | データ部分のみ(ヘッダー・集計行を除く) |
.HeaderRowRange | ヘッダー行のセル範囲 |
.TotalsRowRange | 集計行のセル範囲(表示時のみ) |
まとめ
VBAを使えば、Excelテーブルのセル範囲を簡単に取得・選択できます。ListObjects("テーブル名").Range
を使うことで、見出しや集計行も含めたテーブル全体の範囲を正確に操作することが可能です。
テーブル全体に書式を適用したり、コピー処理や削除処理を行ったりする場面では、この方法が非常に有効です。ぜひ、日常業務にお役立てください。