等到Application.Calculate完成

时间:2012-06-30 19:30:22

标签: excel events vba excel-vba

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

2 个答案:

答案 0 :(得分:32)

根据我的评论,您可以将DoEvents与Application.CalculationState一起使用。见这个例子

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

如果您还想要,还可以使用Do While Loop来检查Application.CalculationState

我还建议看这个链接

主题:Application.CalculationState属性

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

从上方链接引用

  

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

答案 1 :(得分:0)

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

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

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

Application.Calculate