将下面两段代码运用到程序中,可以提高代码的执行效率。
第1段代码:
Public CalculationState As Long
Public EventState As Boolean
Public PageBreakState As Boolean
Sub BeginCode()
'关闭屏幕刷新
Application.ScreenUpdating = False
'保存当前事件设置状态
EventState = Application.EnableEvents
'关闭自动启动事件
Application.EnableEvents = False
'保存当前计算模式
CalculationState = Application.Calculation
'将计算模式设置为手动
Application.Calculation = xlCalculationManual
'保存当前显示分页符设置
PageBreakState = ActiveSheet.DisplayPageBreaks
'关闭显示分页符
ActiveSheet.DisplayPageBreaks = False
End Sub
第2段代码:
Sub EndCode()
'恢复原始设置
ActiveSheet.DisplayPageBreaks = PageBreakState
Application.Calculation = CalculationState
Application.EnableEvents = EventState
Application.ScreenUpdating= True
End Sub
在程序中按下面的示例调用上面的2段代码:
Sub MyMainProc()
'放在过程代码开头
CallBeginCode
'主要代码放置在这儿...
'放在过程代码末尾
CallEndCode
End Sub
为什么这些代码可以加速程序的执行?
只是关闭了Office应用程序里的一些设置,这些设置要使用计算机内存去报告程序在计算机屏幕上正执行的每项操作。这样,计算机在执行程序时不会试图同时执行太多操作,因此加快了程序的执行速度。
刷新屏幕(ScreenUpdating属性)
除非想要在屏幕上显示动画,你应该总是关闭屏幕刷新,这避免了程序不停地更新屏幕而占用太多的资源,从而提高了程序的运行速度。
取消显示页面分隔线(DisplayPageBreaks属性)
如果显示分页符,那么在运行VBA代码时,如果对工作表进行了修改,都会重新计算分页符。如果代码正在执行添加或删除大量数据的操作,那么可能会花费较长的时间,因为需要不断重新计算以更新分页符。
将计算模式调整为手动(Calculation属性)
如果代码正在操作公式相关单元格,那么Excel将尝试实时重新计算。如果在执行VBA代码时关闭自动计算,则可以显著提高代码运行效率,特别是工作表中有大量计算时。
关闭事件自动响应(EnableEvents属性)
用户在工作簿中操作时,会触发相应的事件。在VBA代码执行时,也会触发相应的事件,这可能导致执行额外的操作。在执行代码时,暂时关闭事件触发,使代码运行更加流畅。