テーブル機能の備忘録 ① テーブルの指定方法

最近頻繁に、テーブルをマクロで操作することが多くなった。
そこで今回、備忘録を兼ね、テーブルについてまとめてみる。
f:id:Infoment:20200223223405j:plain

テーブル機能については、既に多くの方が丁寧に解説されている。
詳細説明は、そちらにお願いするとしよう。

設定方法は実に簡単で、主に以下の二通り。
テーブルとして書式設定する表の一部、又は全てを選択し、以下の何れかを行う。

  1. 「テーブルとして書式設定」ボタンを押す
  2. Ctrlキーを押しながら、Tを押す。


テーブルとして書式設定ボタンは、ホームタブの「条件付き書式」の右隣。
だから、例え正体が分からずとも、普段から見ている人は多いと思う。
f:id:Infoment:20200223224010p:plain


ボタンを押して、テーブルに変換する範囲の指定と、先頭行をテーブルの
見出しとして使用するか否かを決める。
f:id:Infoment:20200223224245p:plain


見出しとは、この表で言えば一行目の「名前」「ふりがな」など、その列の情報が何を表しているか説明する情報行を指している。大抵は、あった方が都合が良いと思う。

さて、VBAにおいて、テーブルはListObjectであり、ListObjectsコレクションのメンバーである。だそうな。
docs.microsoft.com


従って、テーブルを変数にセットする場合、変数の型はListObjectまたはValiant(=何でも入る型)の何れかを選択する。こんな感じだ。

    Dim Tb As Excel.ListObject

Excel」を省略して、単に

    Dim Tb As ListObject

と書くこともできる。ほとんどの場合は省略されており、私も省略で良いと思う。
※ただし、Word側から操作するなどの場合は省略不可。

ListObjcetは、ListObjcetの集合体、つまりListObjectsコレクションの中の一つだ。
従って変数にセットする際は、以下のように指定する。今回は、二通りのご紹介。

    Dim Tb As Excel.ListObject
    ' 何番目のListObjcetか?で指定する場合。
    Set Tb = ActiveSheet.ListObjects(1)
    ' 名前で指定する場合。
    Set Tb = ActiveSheet.listobjcets("テーブル1")

これ以外の方法も有るかもしれないが、私が知る限りはこの二つ。
何番目?で指定する場合、何番目か知らないと指定できない。シート毎に1番から
始まるので、対象シートにテーブルが一つしかない場合は、前者でも充分か。
※番号は、作成順に附番される。
※テーブルとしての書式設定が解除されたり、削除されると、その後のテーブルは
 番号が自動的に繰り上がる。

テーブルが複数ある場合、名前で指定した方が確実だ。名前は、テーブルデザインタブで確認することが出来る。
f:id:Infoment:20200223225937p:plain
f:id:Infoment:20200223225957p:plain

こちらで、名前の変更も可能だ。

次回は、テーブルの範囲についてご紹介。
明日に続きます。

参考まで。