自动重新评估非易失性 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/
以获得对此的更详细讨论和对原因的推测。
比如说,我们有以下非易失性 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/ 以获得对此的更详细讨论和对原因的推测。