在我的表的D列中,我有一个自定义函数,其变量在A列和B列中:
=MyFunction([ColumnA],[ColumnB])
我现在意识到该函数还需要捕获列C中的字符串。我可以将其添加为另一个变量:
=MyFunction([ColumnA],[ColumnB],[ColumnC])
...但我希望我可以在不添加变量的情况下这样做。
如果函数可以识别它所在的单元格会很棒,有点像ActiveCell:
Public Function(VarA, VarB)
ColumnCtext = ThisCell.Offset(0,-1).value
End Function
...其中,对于D列中的每一行,“ThisCell”返回 - 好吧,有问题的单元格。
这可能吗?
答案 0 :(得分:2)
Application.Caller
可用于标识调用函数的单元格。
一些警告:
如果您尝试使用Application.Caller.Value
,您将获得循环引用。使用Caller
获取另一个单元格的值,例如Application.Caller.Offset(0, -1).Value
会好的。
因为您不打算将函数中使用其值的单元格作为参数传递,所以对该单元格的任何更改都将不导致重新计算您的函数,除非您将您的功能标记为Volatile
。 (这样做意味着只要任何单元格被更改,就会调用您的函数。)