我的宏用数字更新了一个大型电子表格,但它运行非常缓慢,因为 excel 在计算结果时会渲染结果。如何在宏完成之前停止 excel 渲染输出?
Oskar
问问题
4795 次
5 回答
16
我使用了两种建议的解决方案:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...
...
...
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
于 2008-09-27T18:11:49.177 回答
2
Application.ScreenUpdating = False
当然,完成后再次将其设置回 True,即使出现错误也是如此。例子:
Public Sub MyMacro
On Error GoTo ErrHandler
Application.ScreenUpdating = False
... do my stuff that might raise an error
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
Application.ScreenUpdating = True
... Do something with the error, e.g. MsgBox
End Sub
于 2008-09-27T18:05:28.693 回答
2
我也更喜欢使用这两种建议的解决方案,但也保持用户以前的计算模式。
对于这个特定的应用程序,这可能没什么大不了的,但通常最好的做法是让用户在您的过程完成后恢复他们的设置:
Application.ScreenUpdating = False
PreviousCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
...
...
...
Application.Calculation = PreviousCalcMode
Application.ScreenUpdating = True
注意。如果您原本出色的代码中发生错误,那么插入一些打开 Application.ScreenUpdating 的错误处理也是值得的;)如果我没记错的话,当 ScreenUpdating = false 时,Excel 不会显示任何错误消息等。像这样的东西:
Sub DoSomeThing
On Error Goto DisplayError
Application.ScreenUpdating = False
PreviousCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
...
...
...
Application.Calculation = PreviousCalcMode
Application.ScreenUpdating = True
Exit Sub
DisplayError:
Application.Calculation = PreviousCalcMode
Application.ScreenUpdating = True
MsgBox Err.Description
End 'This stops execution of macro, in some macros this might not be what you want'
'(i.e you might want to close files etc)'
End Sub
于 2009-01-17T00:30:38.473 回答
1
基于 Joe 和 SeeR(这使用旧语法,因此它与 Office 2000 的 VBA 兼容):
On Error Goto AfterCalculation
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...
AfterCalculation:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
于 2008-09-27T18:49:53.733 回答
0
您可以在选项对话框中关闭自动计算,它将其设置为仅在您按 F9 时计算。
于 2008-09-27T18:03:17.030 回答