我的macros如何计算,如何防止Excel呈现电子表格?

我的macros用数字更新了一个大型的电子表格,但是它运行得非常慢,因为excel在计算结果时会显示结果。 在macros完成之前,如何阻止excel渲染输出?

我使用两个build议的解决scheme:

Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ... ... ... Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True 

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, eg MsgBox End Sub 

我也更喜欢使用两个build议的解决scheme,但也保持用户以前的计算模式。

对于这个特定的应用程序来说,这可能不是什么大问题,但通常最好的做法是让用户在完成过程后恢复其设置:

 Application.ScreenUpdating = False PreviousCalcMode = Application.Calculation Application.Calculation = xlCalculationManual ... ... ... Application.Calculation = PreviousCalcMode Application.ScreenUpdating = True 

NB。 插入一些可以打开Application.ScreenUpdating的error handling也是值得的,否则在你的其他精彩的代码中会出现一个错误;)如果内存服务于我,那么当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' '(ie you might want to close files etc)' End Sub 

基于Joe和SeeR(这使用旧的语法,因此它与Office 2000的VBA兼容):

 On Error Goto AfterCalculation Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ... AfterCalculation: Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True 

您可以在选项对话框中closures自动计算function,将其设置为只在您按F9时计算。