Set ステートメントでオブジェクトを丸ごと格納して、リストのセルを参照します

 前回 は列と行の取得についてお話しました。
 今回の記事ではリストのセルを参照する方法を説明します。

新しいデータを用意しましたよ

 いつも同じデータばかり使っていると飽きてしまうので、今回から新しいデータを使いましょー。

氏名 ふりがな
谷頭 慶子 たにがしら けいこ
若島 祐子 わかしま ゆうこ
藁粥 幸子 わらがゆ ゆきこ
桐淵 多美子 きりぶち たみこ
射手矢 三香 いでや みか

 これをコピーしてセル B2 に貼りつけてからテーブルに変換してね。
 テーブル名は「氏名」としておいてくださいな。
 

セルを1つ選択してみます

 データ部分の1列1行目にある「谷頭 慶子」というデータを取得してみます。

 Sub セルを選択()

  Dim myrg As Range

 'データ部分を取得して myrg に格納します
  Set myrg = ActiveSheet.ListObjects("氏名").DataBodyRange

 '左上隅のデータを表示します
  Debug.Print myrg.Cells(1, 1)

 End Sub

 マクロを実行すると VBE 画面の下にあるイミディエイトウィンドウに「谷頭 慶子」と表示されるはずです。

Set ステートメント

 Set ステートメントはオブジェクトを丸ごと格納してしまうことができます。

Set myrg = ActiveSheet.ListObjects("氏名").DataBodyRange

という記述はテーブルのデータ部分だけをとって myrg に放り込んでいるのです。上のような短いマクロではあまり有難味を感じられませんけど、

ActiveSheet.ListObjects("氏名").DataBodyRange

によって何度も同じオブジェクトを参照しなくてはならない場合、記述を簡略化できるので、とても重宝するのです。とりあえずデータ範囲などを取得するオブジェクトは Set ステートメントで短い変数にぽいっと放り込む癖をつけておきましょー。

Debug オブジェクト

 Debug オブジェクトはイミディエイトウィンドウのことです。このオブジェクトに対して Print メソッドを用いて

Debug.Print x

と記述すると x の値が表示されます。

相対位置で参照します

 myrg にデータ範囲が入っているので、

myrg.Cells(1, 1)

と書くだけでセルを参照できます。cells プロパティは

Cells(行, 列)

という記述でデータ範囲に対して「相対位置」でセルを参照します。

 エクセルテーブル左上隅を起点

 myrg は見出しを除いたデータ部分が入っているので、1行1列目はセル B3 となっています。つまりこのセルを抜き取ってイミディエイトウィンドウに表示するには

Debug.Print myrg.Cells(1,1)

と記述します。ここを起点に3行1列目のデータ「藁粥 幸子」を表示させたい場合は

Debug.Print myrg.Cells(3,1)

と書けばよいのです。次回はセル参照の応用編です。もうちょっとだけ複雑なマクロを作ってみますよ。
 

五位野鋭重さん

 今回のエクセル練習用データですよー。
 欲しい人はコピーして持ち帰ってねー。

・ 葛目一幸(くずめ かつゆき) 東京都練馬区白幡東 4-35-2
・ 五十峰貴紀(いそみね たかき) 東京都目黒区米 7-47-10
・ 野寄啓紀(のより けいき) 東京都豊島区千倉瀬戸 4-19-12
・ 井早正一(いはや せいいち) 東京都杉並区片瀬海岸 1-39-9
・ 主計純平(かずえ じゅんぺい) 東京都港区神田 7-59-9

 ≫ データベース研究所

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

コメントをどうぞ

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください