テーブル名で ListObject オブジェクトを参照します

 前回の記事でデータをテーブルに変換すると ListObjects(1) というように ( ) の中に番号を付けて分類されると説明しました。でもシートにテーブルがたくさん増えてくると、どの番号がどのテーブルに対応しているのか、さっぱり分からなくなってしまうこともあります。マクロの可読性を高めるためにも、やはりそれぞれのテーブルに分かりやすい名前をつけておきたいものです。
 

データを用意します

 今回の練習サンプルはこちらです。

氏名 ふりがな
吉府 豪宏 よしふ ひでひろ
金平 淑樹 かねひら としき
加岳井 雪実 かがくい ゆきみ
万城目 友理江 まんじょうめ ゆりえ
銅突 賀代子 どうづき かよこ

 これをコピーしてセル B2 に貼りつけてくださいな。
 

テーブルに変換して名前を設定します

 今まで通り、[ホーム] タブからテーブルに変換したあと、[テーブルツール] の [デザイン] で名前を「氏名ふりがな」と設定してください。一連の操作をマクロでやりたいなら次のようになります。

 Sub 名前定義()

 'テーブル内のセルを選択します
 Range("b2").Select

 '新しいテーブルを追加して名前を設定します
 ActiveSheet.ListObjects.Add.Name = "氏名ふりがな"

 'テーブルを淡いオレンジ色に設定します
 ActiveSheet.ListObjects("氏名ふりがな").TableStyle = "TableStyleLight21"

 End Sub

 マクロを実行すると淡色オレンジのテーブルに変換されます。自分好みのデザインにしたい場合は "TableStyleLight21" という部分を書き変えてください。[テーブルツール] の [デザイン] でアイコンにカーソルをもっていくと、デザインの種類がポップアップします。日本語で表示されてしまうのすけど、淡色なら Light というように、ある程度類推できると思います。

 テーブル変換するだけで、わざわざこんなマクロを作る人もあまりいないと思いますけど、VBA の勉強にはなります。欲しい人は持ち帰って標準モジュールに貼りつけておいてくださいな。
 

テーブル名を参照します

 テーブル名を使ってリストを参照する記述は今後も繰り返し登場します。
 まずは MsgBox 関数を使って名前を表示させてみましょー。

 Sub 名前表示()
  MsgBox ActiveSheet.ListObjects("氏名ふりがな").Name
 End Sub

 マクロを実行するとメッセージボックスに「氏名ふりがな」と表示されます。

 MsgBox氏名ふりがな

 このように「テーブル名で ListObject オブジェクトを指定して、そこから各種プロパティを使って様々な情報を参照する」というのが VBA によるテーブル制御の基本となります。前回の復習も兼ねて、テーブル名でデータ部分を選択するマクロを書いてみると次のようになります。

 Sub 名前表示()
  ActiveSheet.ListObjects("氏名ふりがな").DataBodyRange.Select
 End Sub

 実行すると、見出しを除いたデータ部分が選択状態になるはずです。
 あ、そうそう。テーブルに名前をつけるときはなるべく具体的なほうがいいですよ。mydata1とか mydata2 みたいにつけてしまうと意味がありませんからね ......

 ≫ データベース研究所

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)