26

我可以强制我的 vba 脚本等到 Application.Calculate 完成重新计算所有公式吗?

4

2 回答 2

38

根据我的评论,您可以将 DoEvents 与Application.CalculationState. 看这个例子

Application.Calculate
If Not Application.CalculationState = xlDone Then
    DoEvents
End If
'~~> Rest of the code.

如果你愿意,你也可以使用 aDo While Loop来检查Application.CalculationState

我也建议查看此链接

主题:Application.CalculationState 属性

链接:http: //msdn.microsoft.com/en-us/library/bb220901%28v=office.12%29.aspx

从上面的链接引用

对于在 Microsoft Excel 中执行的任何计算,返回一个 XlCalculationState 常量,该常量指示应用程序的计算状态。只读。

于 2012-06-30T19:48:29.120 回答
0

接受的答案对我不起作用,因为“DoEvents 在计算完成之前不会阻塞,并且在您的示例代码中实际上是一个无操作”我遇到了同样的问题。最后,这个解决方案对我有用。

Do
    DoEvents
    Application.Calculate
Loop While Not Application.CalculationState = xlDone

在手动计算模式下,有时 while 循环会进入长时间运行的过程。这就是为什么在下面添加的原因。

Application.Calculate
于 2021-01-28T17:59:28.010 回答