← コード一覧へ戻る
実務プロシージャ

ユーザー定義関数が入力されたセルを取得する

Application.Callerで、ユーザー定義関数を呼び出したセルのアドレスを返します。

実行前に確認

  • Application.Callerは呼び出し元によってRange以外の値も返すので型を確認します。
  • これは数式が入力されたセルです。ActiveCellや直前にユーザーが編集したセルを返す機能ではありません。配列数式では複数セル範囲が返る場合があります。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Public Function FormulaCell7042() As String
    Dim callerRange As Range
    If TypeName(Application.Caller) <> "Range" Then
        FormulaCell7042 = "セルから呼び出してください"
        Exit Function
    End If
    Set callerRange = Application.Caller
    FormulaCell7042 = callerRange.Address(False, False)
End Function

図で見るユーザー定義関数が入力されたセルを取得するの流れ

イメージ図

Application.Callerで、ユーザー定義関数を呼び出したセルのアドレスを返します。

  1. 入力・開始時

    B3とD5へ=FormulaCell7042()を入力

  2. 実行する処理

    Application.CallerのRangeからAddressを読む

  3. 結果

    B3にはB3、D5にはD5を表示

ActiveCellではなく数式の呼び出し元です。複数セル配列数式では範囲を返す場合があります。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    練習用.xlsmの空の標準モジュール先頭にコード全体を貼ります。

  2. 2

    Excel画面へ戻り、空いているB3へ=FormulaCell7042()と入力します。

  3. 3

    別の空きセルD5にも同じ数式を入力します。

  4. 4

    B3にはB3、D5にはD5と表示されます。必要ならF9で再計算します。

使っている機能の公式ドキュメント(Microsoft Learn)