我一直在测量代码执行时间,以衡量本地执行脚本和在服务器上执行脚本之间的差异。有一次我忘记禁用screen updating
庆幸的是,在更详细地考虑之前,我对闪光灯不敏感:
当我第一次开始使用时VBA
我一直认为它只是被使用,这样就不会吓到最终用户,让他们认为他们的电脑即将崩溃。当我开始阅读更多关于提高代码效率的内容时,我明白了它的用途,但效果有多大screen updating
你的代码真的有执行时间吗?
如果代码与 Excel 交互的方式导致屏幕内容发生更改,则关闭屏幕更新只会影响执行时间。屏幕变化量越大,影响就越大。其他发布的答案恰当地证明了这一点。
其他可能影响执行时间的应用程序设置包括计算和事件处理。使用此代码模板作为起点(错误处理程序确保这些属性在子程序结束时重新打开,即使出现错误)
Sub YourSub()
On Error GoTo EH
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
' Code here
CleanUp:
On Error Resume Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Exit Sub
EH:
' Do error handling
Resume CleanUp
End Sub
存在其他技术可以进一步提高执行速度。
最有用的包括
- Avoid
Select
, Activate
and ActiveCell/Sheet/Workbook
越多越好。相反,声明并分配变量并引用它们。
- 当引用大范围时,将Range数据复制到变体数组中进行处理,然后将结果复制回范围。
- Use
Range.SpecialCells
, Range.Find
and Range.AutoFilter
限制引用的单元格数量。
SO 上有很多这些技术的例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)