如何识别函数所在的单元格?

时间:2016-12-06 19:30:07

标签: excel excel-vba excel-formula vba

在我的表的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”返回 - 好吧,有问题的单元格。

这可能吗?

1 个答案:

答案 0 :(得分:2)

Application.Caller可用于标识调用函数的单元格。

一些警告:

  1. 如果您尝试使用Application.Caller.Value,您将获得循环引用。使用Caller获取另一个单元格的值,例如Application.Caller.Offset(0, -1).Value会好的。

  2. 因为您不打算将函数中使用其值的单元格作为参数传递,所以对该单元格的任何更改都将导致重新计算您的函数,除非您将您的功能标记为Volatile。 (这样做意味着只要任何单元格被更改,就会调用您的函数。)