我有一些时间序列数据,可能想对它进行计算。我允许用户决定是否应该进行计算。
为实现这一目标,我有一个应用数据验证的单元格,将其选项限制为“是”'并且没有'。然后,我使用一个条件,只是在相邻列中复制源数据,如果下拉菜单切换为“否”'。如果切换到“是”'应用了一个冗长的功能。例如,=if($AO$9='No', B3, B3 *
某些长函数 )
,其中AO9包含切换,这将在C3中输入,然后扩展列的长度乙
从“否”开始切换时到了'是'表格不会自动重新计算。奇怪的是,如果我在“否”之后切换 任何 其他单元格。并且'是'它立即更新并使用适当的条件。此外,在切换单元格后,如果我单击进出公式栏,它也会相应地更新。当有其他人在撰写本书时,这些都不是理想的解决方案。我检查了所有常见的嫌疑人(即,计算选项设置为自动,下面的证明,并且切换单元格设置为常规而不是文本)。
我已经使用这种方案很长时间以允许用户交互,并且从未遇到过问题。但我只是升级到365(版本1802 Build 9029.2253)。有人遇到过这种情况么?如果有,有什么建议吗?
谢谢!
答案 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,无论何时任何打开的工作簿中的任何内容发生变化,都会重新计算。