Excel数据验证列表未触发计算更改时

时间:2018-04-03 01:58:43

标签: excel office365

我有一些时间序列数据,可能想对它进行计算。我允许用户决定是否应该进行计算。

为实现这一目标,我有一个应用数据验证的单元格,将其选项限制为“是”'并且没有'。然后,我使用一个条件,只是在相邻列中复制源数据,如果下拉菜单切换为“否”'。如果切换到“是”'应用了一个冗长的功能。例如,=if($AO$9='No', B3, B3 * 某些长函数 ),其中AO9包含切换,这将在C3中输入,然后扩展列的长度乙

从“否”开始切换时到了'是'表格不会自动重新计算。奇怪的是,如果我在“否”之后切换 任何 其他单元格。并且'是'它立即更新并使用适当的条件。此外,在切换单元格后,如果我单击进出公式栏,它也会相应地更新。当有其他人在撰写本书时,这些都不是理想的解决方案。我检查了所有常见的嫌疑人(即,计算选项设置为自动,下面的证明,并且切换单元格设置为常规而不是文本)。

Calculation Option

我已经使用这种方案很长时间以允许用户交互,并且从未遇到过问题。但我只是升级到365(版本1802 Build 9029.2253)。有人遇到过这种情况么?如果有,有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你已经保留了很多细节超级秘密,但我会提出一个强制B3重新计算的Worksheet_Change事件子程序。

在B3的父工作表的私人代码表中,

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AO9")) Is Nothing Then
        On Error GoTo meh
        Application.EnableEvents = False
        Range("B3").Calculate
    End If
meh:
    Application.EnableEvents = True
End Sub

如果不这样做,只需在超级秘密'长公式'中使用INDIRECT或OFFSET,无论何时任何打开的工作簿中的任何内容发生变化,都会重新计算。