ユーザー定義関数(Function)が呼ばれたセルを取得するには、
Application.Callerプロパティを使用します。
Function ユーザー定義関数() As String Dim 入力セル As Range Set 入力セル = Application.Caller
例えば「入力セルのアドレスを表示する関数」を作る場合は、
以下のようなFunctionを定義します。
Function Get入力されたセルアドレス() As String Dim 入力セル As Range Set 入力セル = Application.Caller Get入力されたセルアドレス = 入力セル.Address(False, False) End Function
このFunctionを以下の画像のようにシート上で使用すると、
ちゃんと入力セルが取得できていることが分かります。

入力セルが結果に反映される代表的な関数にROW/COLUMN関数がありますが、
以下のようなコードで再現することが出来ます。
Function 再現ROW関数(Optional 参照 As Range) As Long ' 省略時は関数が入力されたセルの行番号を返す If 参照 Is Nothing Then Set 参照 = Application.Caller End If 再現ROW関数 = 参照.Row End Function
入力セル.Row/.Columnを使用すれば行列に応じた動きにできますので、
入力セルごとに処理を変えたい関数を作りたいときに活用してください。
なお、Application.Callerは通常の呼び出しでは#REFを返します。
※今回はFunctionのためあまり関係ありませんが、
Subをボタンから実行した場合は実行したボタン名を取得できます。
Functionがセル以外から呼ばれる可能性もある場合は、
Application.Callerの結果値をTypeNameで調べて分岐してください。
Function ユーザー定義関数() As String If TypeName(Application.Caller) = "Range" Then Dim 入力セル As Range Set 入力セル = Application.Caller End If End Function