如何从调用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
请注意,将列作为范围(ThisRow_Col(A1)
)传递比将其作为字符串传递更好,因为如果移动或插入列,Excel可以自动更新公式。当然1
行A1
只是一个惯例。
答案 0 :(得分:64)
Application.Caller
返回调用UDF的范围对象。