web-dev-qa-db-ja.com

関数が呼び出されるExcelセル

VBA関数が呼び出されるセルを取得するにはどうすればよいですか?

言い換えれば、INDIRECT(ROW()、COLUMN())に相当するVBAは何ですか?

私はnotActiveCellを探しています。

私がやりたいのは、単純な関数ThisRow_Col(rColumn As String)が、呼び出し元の行の列Xを返すようにすることです。 B2で= ThisRow_Col( "A")を呼び出すと、A2の値が返されます。これは、アクティブなセルに関係なく機能するはずです。

[〜#〜] edit [〜#〜]:回答をありがとう、Charles:Application.Caller。次のコードは、選択の場所に関係なく、現在の行の列Xを取得します。

_Function ThisRow_Col(rColumn As Range)
    ' Return INDIRECT(rcolumn & ROW())

    ThisRow_Col = Application.Caller.Worksheet.Cells(Application.Caller.Row, rColumn.Column).Value

End Function
_

列を移動または挿入すると、Excelが数式を自動的に更新できるため、列をRange(ThisRow_Col(A1))として渡す方が文字列として渡すよりも優れていることに注意してください。もちろん、_1_の_A1_行は単なる規則です。

47
Dan Dascalescu

Application.Callerは、UDFの呼び出し元の範囲オブジェクトを返します。

68