将 Application.Volatile 设置为 False 会停止单元格计算,即使输入发生更改也是如此

Setting Application.Volatile to False stops cell calculating even when input changes

提问人:DS_London 提问时间:10/31/2023 更新时间:10/31/2023 访问量:27

问:

我有一个奇怪的问题,阻止我的函数被调用。Application.Volatile False

从有关 Application.Volatile 的 MS 帮助中:

将用户定义的函数标记为易失性函数。易失性函数必须 每当计算发生在 工作表。仅当输入 变量会发生变化。如果此方法不在 用于计算工作表单元格的用户定义函数。

我的VBA功能:

Option Explicit

Public Function AddOne(d As Double) As Double
    Application.Volatile False
    Debug.Print "AddOne called"
    AddOne = d + 1
End Function

的期望是,只有当输入发生变化时,才会调用 AddOne。d

我有一张纸,其中:

A1 有公式=NOW()

B1 有公式=AddOne(A1)

“计算”模式设置为“自动”。

令我惊讶的是,B1 没有使用 Shift-F9 进行更新我可以看到 A1 中的值发生了变化,但 B1 中的值没有变化(并且 VBA 即时窗口中没有任何内容显示)。

MS 帮助中有一个隐晦的评论:Now()

注意:如果 NOW 函数未按预期更新单元格值 它,您可能需要更改设置,以控制何时 工作簿或工作表重新计算。这些设置可以在 Excel 桌面应用程序的控制面板。

但是什么是 Excel 桌面应用程序的控制面板

VBA Excel-公式

评论


答: 暂无答案