【VBA】セルの値を取得方法まとめ
- 作成日:2024/11/27
vbaでセルの値を取得する方法です。
同一シートの値を取得する
同じシート内にあるセルの値を取得する方法です。 アルファベットで指定するA1形式と、数値で指定するR1C1形式の2つのやり方があります。
B2セルにある値を取得してみます。
Sub test()
Dim val As String
'A1形式
val = Range("B2")
'R1C1形式
val = Cells(2, 2)
End Sub
どちらで指定しても意味は同じです。
ちなみに、デフォルトではエクセルはR1形式で表示されています。 形式を変える場合はファイル→その他→オプション→数式→数式の処理欄にある「R1C1参照形式を使用する」にチェックを入れると R1C1形式になります。
別シートの値を取得する
別シートにあるセルの値を取得するには「Worksheets(シート名)」と指定します。
以下はSheet2にのあるセルの値を取得するサンプルです。
Sub test()
Dim val As String
'A1形式
val = Worksheets("Sheet2").Range("B2")
'R1C1形式
val = Worksheets("Sheet2").Cells(2, 2)
End Sub
WorksheetsとSheetsのちがい
ちなみに、Worksheetsの部分をSheets(シート名)と記述する方法もあります。
WorksheetsはSheetsの一部なのでSheetsだけでも良いのですが、1つだけ注意点があります。 それはWorksheets以外のシートを使用している、かつはWorksheetsと同じ名前をつけているときです。 SheetsにはWorksheets以外にもグラフシートやモジュールシートなど色々なシートがあります。
例えば、同一ブック内にWorksheetsとグラフシートがあり、それらの名前が両方とも「test」という名前だとしましょう。 この場合、Sheets(シート名)と記述するとWorksheetsなのかグラフシートなのか区別がつかないのです。
しかし、このようなケースに遭遇することは非常に稀だと思うので、 文字数が少ない「Sheets(シート名)」と記述しても大抵は問題ありません。 万が一を考慮したい場合は「Worksheets(シート名)」と書けば確実です。
別ブックの値を取得する
別ブックの値を取得する場合は「Workbooks("ブック名").Worksheets("シート名")」と指定します。
Sub test()
Dim tmp As String
tmp = Workbooks("Book1").Worksheets("Sheet2").Cells(1, 1)
End Sub
なお、ブックは開いていなければなりません。