【VBA】テーブル全体・見出し・データの選択

 少し間が空きましたけど、データベース研究所の記事ですよ。今回からいよいよ VBA を使ってテーブルデータを制御する方法を解説します。ワークシートのデータをテーブルに変換すると、そのデータ範囲は ListObject オブジェクト として VBA で操作できるようになります。もう少し細かく言うと、作った順番に

ListObjects(1), ListObjects(2), ......

というように自動で分類されます。でも ( ) の中は自分で名づけたテーブル名で扱うこともできますよ。そうしたことも含めて、これから少しずつ ListObject オブジェクト に慣れていきましょう。

【VBA】データの選択方法

 今回の記事では リストの全体・見出し・データの選択 について学びます。次のような氏名と住所のデータを使って解説します。練習してみたい人は持ち帰ってくださいな。もちろんご自身で適当なデータを用意してくださってもかまいません。今回は見出しなどを選択するだけなので、データの中身は何でもいいのです。

氏名 住所
筆 玉枝 東京都目黒区目黒 3-46-11
井方 勝二郎 東京都板橋区赤塚 1-23-10
津高 君章 東京都板橋区若木 2-5-8
女部田 辰之助 東京都葛飾区白鳥 7-4-12
保手 真梨江 東京都荒川区西日暮里 5-33-7

 ワークシートは新しいものを用意してください。上のデータを適当な場所にコピーして [ホーム]、[テーブルとして書式設定] を順に選択してテーブルに変換します。そのとき現れるダイアログボックスでは必ず [先頭行をテーブルの見出しとして使用する] チェックボックスを ON にしておいてくださいな。

【VBA】テーブル全体を選択

 まずはテーブル範囲全体を選択する簡単なマクロを書いてみます。

'[VBA] テーブル範囲全体を選択
Sub Select_Table()
  ActiveSheet.ListObjects(1).Range.Select
End Sub

 Select_Table() を実行するとテーブル範囲全体が選択されます。

 ListObjectsリスト全体を選択

 テーブルの範囲は ListObject オブジェクトでは参照できません。必ず Range プロパティで Range オブジェクトを取得しておきます。

【VBA】テーブルの見出しを選択

 次は見出しの部分を選択してみましょう。
 HeaderRowRange プロパティを使います。

'[VBA] テーブルの見出しを選択
Sub Select_Header()
  ActiveSheet.ListObjects(1).HeaderRowRange.Select
End Sub

 Select_Header() を実行すると …

 ListObjectsリスト見出しを選択

 このようにテーブルの見出しが選択されますよ。

【VBA】テーブルのデータ部分を選択

 応用上は見出しを除いたデータ部分を得るのが最も実用的になります。その場合は DataBodyRange プロパティで範囲を得ることになります。

'[VBA] テーブルのデータ部分を選択
Sub Select_Data()
  ActiveSheet.ListObjects(1).DataBodyRange.Select
End Sub

 Select_Data() を実行すると …

 ListObjectsリストのデータ部分を選択

 ちゃんとデータ部分だけが選択されていますね。次回もまた ListObject オブジェクト について色々と学びます。あ~、それからね、「リストオブジェクトオブジェクト」て音が重なってるけど、これは別に誤字ではありませんよ。ちょー読みにくいけどね。

コメント

タイトルとURLをコピーしました