我可以强制我的vba脚本等到Application.Calculate完成后重新计算所有公式吗?
答案 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