excel 等待Application.Calculate完成

4sup72z8  于 2023-02-17  发布在  其他
关注(0)|答案(4)|浏览(129)

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

v64noz0r

v64noz0r1#

作为我的补充,您可以将DoEvents与Application.CalculationState一起使用。

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

如果需要,还可以使用Do While Loop检查Application.CalculationState
我还建议查看此链接

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

abithluo

abithluo2#

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

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

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

Application.Calculate
6ovsh4lw

6ovsh4lw3#

真不敢相信没有人发布这个解决方案,这似乎是最确定的一个...

Do While Not Application.CalculationState = xlDone
    If Application.CalculationState = xlPending Then Application.Calculate
    Application.Wait (Now + TimeValue("00:00:02"))
Loop

微软文档说application.wait允许在后台进行重新计算。

laawzig2

laawzig24#

不幸的是,没有。在某些情况下,它不重新计算工作表,不起作用。如果它起作用了,那将是一个梦想。

相关问题