構文
構文は以下の通りです。
WorksheetFunction.Indirect(参照文字列)
解説
WorksheetFunctionは、ExcelVBAの組み込みオブジェクトで、Excelのワークシート関数をVBAから呼び出す際に使用します。Indirect関数は、文字列で書かれたセルの場所を元に、その場所の中身を取得します。参照文字列には、セルの場所を示す文字を指定します。例えば"A1"や"B2"などです。
プログラミング例
具体的なプログラミング例を紹介します。
事前準備として、セル"A1"に"C3"と入力し、セル"C3"に"りんご"と入力しておきます。
Sub 間接参照の例()
Dim セルのアドレス As String
Dim セルの値 As Variant
' セルA1から参照したいセルのアドレスを取得
セルのアドレス = Range("A1").Value
' Indirect関数でセルの値を取得
セルの値 = WorksheetFunction.Indirect(セルのアドレス)
' 結果を表示
MsgBox "セル" & セルのアドレス & "の値は「" & セルの値 & "」です。"
End Sub
Dim セルのアドレス As String
Dim セルの値 As Variant
' セルA1から参照したいセルのアドレスを取得
セルのアドレス = Range("A1").Value
' Indirect関数でセルの値を取得
セルの値 = WorksheetFunction.Indirect(セルのアドレス)
' 結果を表示
MsgBox "セル" & セルのアドレス & "の値は「" & セルの値 & "」です。"
End Sub
上記のプログラムは、セルのアドレスという変数を作り、セル"A1"に入力された"C3"という文字列を取得します。次に、Indirect関数を使って、文字列"C3"をセルC3への参照に変換し、セルC3に入力されている"りんご"をセルの値という変数にセットします。最後に、MsgBoxで"セルC3の値は「りんご」です。"と表示します。
まとめ
Indirect関数を使うと、文字で書かれたセルの場所を元に、そのセルの中身を取得することができます。これにより、セルの場所を変数として扱うことができ、プログラムをもっと柔軟にすることができます。