教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAのWorksheetFunctionオブジェクトで使用するIndirect関数の使い方

構文

構文は以下の通りです。

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

上記のプログラムは、セルのアドレスという変数を作り、セル"A1"に入力された"C3"という文字列を取得します。次に、Indirect関数を使って、文字列"C3"をセルC3への参照に変換し、セルC3に入力されている"りんご"をセルの値という変数にセットします。最後に、MsgBoxで"セルC3の値は「りんご」です。"と表示します。

まとめ

Indirect関数を使うと、文字で書かれたセルの場所を元に、そのセルの中身を取得することができます。これにより、セルの場所を変数として扱うことができ、プログラムをもっと柔軟にすることができます。