Excel VBA宏如何知道它所调用的单元格

时间:2015-02-18 13:43:14

标签: excel vba excel-vba

我有一个自定义宏函数,在模块中声明:

Function myMacro(value as String) as String   
    myMacro = "Hello world " & value 
End Function

此宏插入单元格(例如A1),并将B2的值作为参数。

Fx(A1 cell) = "MyMacro(B2)"

所以每当B2中的值发生变化时,我的MyMacro功能就会被触发,这是正常的,正是我想要的。

但我想改进我的宏以提高用户友好性,因为我的宏可能需要很长时间(3或4秒)才能执行。在显示实际结果之前,我希望我的宏在结果单元格内显示“computing ...”。

要做到这一点,我的宏必须知道计算完成的单元格。在前面的示例中,我的宏需要知道在A1单元格上触发宏。

Application.Cell属性包含当前单元格(用鼠标选择的单元格),它并不总是包含宏公式的单元格。

有没有办法让VBA函数知道哪个单元调用该函数?

1 个答案:

答案 0 :(得分:0)

Application.Caller将返回输入函数的范围。如果公式是数组输入到多个单元格,它将返回包含该数组的整个范围。如果您只想要包含公式的单个单元格,则可以使用Application.ThisCell