自动重新评估非易失性 UDF

Re-evaluate non volatile UDF automatically

比如说,我们有以下非易失性 UDF:

Function Twice(ByRef x As Double) As Double
    Application.Volatile False
    Twice = 2 * x
End Function

我们在参考单元格 A2 的单元格 A1 中输入,即在 A1 中我们输入:

= Twice(A2)  

此外,在A2中我们放入随机函数,即在A2中我们放入:

=RAND()  

现在,如果我们重新计算 sheet(例如,按 Shift + F9),值单元格 A2 中的内容会更改,但 UDF 不会更新,即使其引用已更改。

我们如何使这个 UDF 自动更新(即不按 Ctrl+Alt+F9) 当它的参考值改变时?

当您将 Application.Volatile False 与引用可变公式的 Double 参数一起使用时,我认为这是一个错误。

如果删除 Application.Volatile 错误语句,它就可以正常工作。

https://fastexcel.wordpress.com/2011/09/05/false-volatility-is-this-a-bug/ 以获得对此的更详细讨论和对原因的推测。