从中调用Function的Excel单元格

Dan*_*scu 49 excel vba cell

如何从调用VBA函数的单元格中获取?

换句话说,什么是INDIRECT(ROW(),COLUMN())的VBA等价物?

不是在寻找ActiveCell.

我想要做的是有一个简单的函数ThisRow_Col(rColumn As String)返回它所调用的行的列X. 比如在B2中我调用= ThisRow_Col("A"),它应该返回A2的值.无论哪个单元活动,这都应该有效.

编辑:谢谢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
Run Code Online (Sandbox Code Playgroud)

请注意,将列作为Range(ThisRow_Col(A1))传递比将其作为字符串传递更好,因为如果移动或插入列,Excel可以自动更新公式.当然,这一1A1只是一个惯例.

Cha*_*ams 69

Application.Caller 返回调用UDF的范围对象.

  • @dandv,@ phoog,以下是有关Application.Caller的更多细节:http://stackoverflow.com/questions/3861431/vba-how-to-get-the-last-used-cell-by-vba-code-当最最后的错误发生,在-AW/3874340#3874340 (3认同)