当我的宏计算它时,如何阻止Excel呈现电子表格?

时间:2008-09-27 18:01:49

标签: excel

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

5 个答案:

答案 0 :(得分:16)

我使用两种建议的解决方案:

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

答案 1 :(得分: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

答案 2 :(得分:2)

我也更喜欢使用两种建议的解决方案, 但也保持用户以前的计算模式。

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

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

NB。还值得花些时间插入一些错误处理,打开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

答案 3 :(得分:1)

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

On Error Goto AfterCalculation
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...

AfterCalculation:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

答案 4 :(得分:0)

您可以在选项对话框中关闭自动计算,它会将其设置为仅在您按F9时计算。