リストの見出し部分のデータを取り出します

 データベース研究所の記事です。 ListObject オブジェクトを使ったマクロを作っていると、見出しの部分のデータを参照 したいなあと思うことが結構あります。そんなわけで、この記事で基本的な参照法を確認しておきましょー。今回は以下のデータを使うので、実践してみたい人はコピーしてシートに貼りつけてくださいな。

氏名 ふりがな 住所
嘉向 仰 かむき あおぎ 東京都板橋区竹原中郷 8-6-5
龍見 青児 たつみ せいじ 東京都目黒区青木 8-4-7
鉄炮塚 恒成 てっぽうづか つねなり 東京都新宿区川口 1-39-10
与羽瀬 梓 よはぜ あづさ 東京都港区中央台 1-42-8
鍋釜 孝正 なべかま たかまさ 東京都中野区新塚 7-23-3

 上の表を見出し付テーブルに変換しすると次のようになりますよ。

 VBA見出し表示マクロ用の練習資料

 このテーブルから、見出しにある「氏名」、「ふりがな」、「住所」という文字列を取り出してみます。
 

見出しデータを出力します

 リスト内のセルを選択した状態で以下のマクロを実行してくださいな。

 Sub 見出しデータの表示()

 Dim i As Integer, lct As Integer
 Dim myrange As Range

 '選択したリストの行数を数えます
 lct = Selection.ListObject.ListColumns.Count

 'リストの見出し行を得ます
 Set myrange = Selection.ListObject.HeaderRowRange

 '見出し行にある各セルのデータを出力します
 For i = 1 To lct

  Debug.Print myrange.Cells(1, i),

 Next

 End Sub

 マクロを実行するとイミディエイトウィンドウに「氏名、ふりがな、住所」と表示されるはずです。

HeaderRowRange プロパティ

 ListObject オブジェクトは Range オブジェクトの1つ下の階層に位置しています。

Set myrange = Selection.ListObject.HeaderRowRange

と書けば、 HeaderRowRange プロパティ によって得た見出し行のセル範囲を、変数 myrange にセル範囲をぽいっと放り込むことができるのです。 Range 型変数は本当に便利ですね。 myrange には見出しを構成する3つのセルが入っているので、たとえば

myrange.Cells(1, 1)

と書けば、範囲の一番左である「氏名」というデータを参照していることになります。上のマクロでは列を変数 i にして For...Next ステートメントで 1, 2, 3 と動かして3つの見出しを順に表示させています。

 ≫ データベース研究所

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

コメントをどうぞ

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

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