【问题标题】:How a Excel VBA macro can know on which cell it is calledExcel VBA 宏如何知道在哪个单元格上调用了它
【发布时间】:2015-04-19 13:03:01
【问题描述】:

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

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

这个宏被插入到一个单元格(例如A1)中,并以B2的值作为参数。

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

所以我的 MyMacro func 每次 B2 中的值改变时都会触发,这是正常的,正是我想要的。

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

为此,我的宏必须知道计算是在哪个单元格上完成的。在前面的例子中,我的宏需要知道宏是在 A1 单元格上触发的。

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

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

【问题讨论】:

标签: vba excel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多