VBA【セルの値を取得】完全マスター【マクロ初級編】
エクセルVBAで「セルの値を取得」する方法を記載します。
応用編として、他のブック、別のシートのセルの値を取得する方法も記載します。
< ---目次--- >
◆セルの値を取得 [基本編]
・サンプルコード
Sub セルの値取得()
Debug.Print [A1].Value '結果 "A1の値"
Debug.Print [A1].Address '結果 "$A$1"
Debug.Print [A1].Address(0, 0) '結果 "A1"
Debug.Print [A1].Column '結果 1
'実行結果はイミディエイトウィンドウに出力されます
End Sub
エクセルVBAで「セルの値を取得」する方法を記載しました。
いたって簡単ですね。
セルを指定した後は、「.(ドット)」を入力し、その後に何を取得するか指定します。
他にもありますが、代表的なのを紹介します。
場合によりますが、無指定だと値取得する事が多いですが
誤動作に繋がるので、必ず指定しましょう。
VBAって「[A1]」でセルの指定できるの?って疑問に思いますよね。
気になりますよね。
こちらの記事で紹介していますのでご覧ください。
「.Value」
そのままですが、「値」を取得します。
「.Address」
セルのアドレスを取得します。
セルの名前で指定する「Range」等で指定した場合は、使うことはないですが、「Cells」の場合は、直感的にわからないので、たまに使います。
「.Address」の後に「(0,0)」と指定すれば絶対参照「$」が無いアドレスを取得できます。
「(行の絶対参照,列の絶対参照)」となっており
「0」は「False」、「1」は「True」を表しています。
なので、「(0,0)」と「(False,False)」は同じ意味です。
「.Column」
セルの列番号を取得します。
◆セルの値を取得 [応用編]
「別のシートの値を取得」
Sub 別シートのセルの値取得()
'他のシートの値を取得
Debug.Print Worksheets(1).[A1].Value
Debug.Print Worksheets("Sheet1").[A1].Value
'実行結果はイミディエイトウィンドウに出力されます
End Sub
「Worksheets(“Sheet1”).[A1].Value」このようにすれば、シート名を指定して、セルの値を取得できます。
「Worksheets(1)」はシートのインデックス番号を指定しています。
「Worksheets(“Sheet1”)」は「”(ダブルクオーテーション)」でシート名を囲み、シート名を指定を指定しています。
名前でもシートのインデックス番号でも、指定できる事がわかりましたね。
「別のブックの値を取得」
Sub 別ブックのセルの値取得()
'他のブックの値を取得(開いているブック限定)
Debug.Print Workbooks(2).Worksheets(1).[A1].Value
Debug.Print Workbooks("Book1").Worksheets("Sheet1").[A1].Value
'実行結果はイミディエイトウィンドウに出力されます
End Sub
シートの指定の前にブックの指定が入ります。
「Workbooks(“Book1”).Worksheets(“Sheet1”).[A1].Value」このようにすれば、ブック名を指定して、セルの値を取得できます。
シート同様に、名前でもシートのインデックス番号でも、指定できます。
この方法は、開いているブックのみに実行できます。
実質、開かずに他のブックの値を取得することは可能ですが
初心者の方は、別のブックを開いてから、値を取得する方法をまず覚えた方がいいと思います。
マクロ(VBA)で、ブックを開く方法はこのようにすればできます。
BookPath = "C\"
BookName = "Book1" & ".xls*"
Workbooks.Open (BookPath & BookName)
ですが、注意点がいくつかありますので、ぜひ、こちら()をご覧ください。*****
マクロ(VBA)で、実質、開かずに別のブックの値を取得する方法で処理が速いオススメの方法を
知りたい方は、こちら()をご覧ください。*****
◆まとめ
上記の方法をマスターすれば、どんなセルの値や他の情報も取得する事ができますね。
実は、セルの値取得はまだまだ深く、範囲指定したり、テーブルのセルから値を取得したり、一旦配列にセルを格納したりなど、色々あります。
これらは、さらに上級の応用となり、覚えなくてもいいけど、覚えたら、セルを扱いやすくなったり
マクロの高速化に繋がるでしょう。
関連リンクを張りますので、ご参照ください。
セルの範囲指定 *****
テーブルのセルから値を取得 *****
配列にセルを格納してVBA高速化 *****