如何识别函数所在的单元格?
在我的表的D列中,我有一个自定义的函数,其variables在列A和B:
=MyFunction([ColumnA],[ColumnB])
我现在意识到该函数还需要捕获列C中的string。我可以将它添加为另一个variables:
=MyFunction([ColumnA],[ColumnB],[ColumnC])
…但我希望我可以这样做,而不添加variables。
如果函数可以识别它所在的单元格,那就太棒了,就像ActiveCell一样:
Public Function(VarA, VarB) ColumnCtext = ThisCell.Offset(0,-1).value End Function
…对于D列中的每一行,“ThisCell”返回 – 这是所讨论的单元格。
那可能吗?
Application.Caller
可以用来标识调用函数的单元格。
一些警告:
-
如果您尝试使用
Application.Caller.Value
您将得到一个循环引用。 使用Caller
者获取另一个单元格的值,例如Application.Caller.Offset(0, -1).Value
将会正常。 -
由于您不打算将函数中正在使用的单元格作为parameter passing,因此对该单元格的任何更改都不会导致重新计算您的函数,除非将函数标记为“
Volatile
。 (这样做意味着你的函数在任何时候任何单元格被改变时都会被调用。)