テーブル機能の備忘録 ② テーブルの範囲指定(1)

昨日から、マクロによるテーブル機能の扱いを纏めている(備忘録)。
今日は、昨日の続き。
f:id:Infoment:20200224223913j:plain

Excelのテーブルについて、その範囲を指定したい場合がある。
f:id:Infoment:20200224224216p:plain

テーブルとして書式設定されていないなら、一般的にはこのような感じだろうか。

Sub Test()
    ' アドレスで直接指定。
    Range("A1:D15").Select
    ' 使用範囲で指定。
    Range("A1").CurrentRegion.Select
    ' シートの使用範囲で指定。
    ActiveSheet.UsedRange.Select
End Sub

上記の二つ目と三つ目は、意図しない範囲を指定する場合があるので要注意だ。
またアドレスで指定する場合も、行や列の追加・削除に自動で追従してくれない
ため、こちらも注意が必要となる。

一方で、テーブルの場合はどうだろう。
まず、テーブル全体を指定する場合がこちら。

Sub Test()
    Dim Tb As Excel.ListObject
    Set Tb = ActiveSheet.ListObjects(1)
        ' テーブル全体を指定。
        Tb.Range.Select
End Sub

テーブルの範囲を指定、ということで、直感的に理解し易いと思う。
また、Excelに限らずお馴染みの

  1. ヘッダー(一行目のラベル範囲)
  2. ボディ (データ範囲)
  3. フッター(集計行?)

で指定することも可能だ。

ヘッダーを指定して、色を付けてみよう。

Sub Test()
    Dim Tb As Excel.ListObject
    Set Tb = ActiveSheet.ListObjects(1)

        Tb.HeaderRowRange.Interior.Color = vbYellow
End Sub

f:id:Infoment:20200224225242p:plain


ボディは、このように選択する。

Sub Test()
    Dim Tb As Excel.ListObject
    Set Tb = ActiveSheet.ListObjects(1)

        Tb.DataBodyRange.Interior.Color = vbYellow
End Sub

f:id:Infoment:20200224230041p:plain


集計行は、こちらをチェックすると表示される。
f:id:Infoment:20200224225443p:plain

集計行をフッターと呼んでよいか分からないが、このように指定できる。

Sub Test()
    Dim Tb As Excel.ListObject
    Set Tb = ActiveSheet.ListObjects(1)
        
        Tb.TotalsRowRange.Interior.Color = vbYellow
End Sub

f:id:Infoment:20200224225737p:plain


次回は、行と列の範囲についてご紹介。
明日に続きます。

参考まで。