【发布时间】:2012-09-12 15:37:36
【问题描述】:
我一直在测量代码执行时间,以衡量在本地执行脚本和在服务器上执行脚本之间的差异。有一次我忘了禁用screen updating,我很庆幸在仔细考虑之前我对闪光灯不敏感:
当我第一次开始使用VBA 时,我一直认为它只是为了防止最终用户认为他们的 PC 即将崩溃而使用它。当我开始阅读更多关于提高代码效率的内容时,我明白了它的用途,但screen updating 对代码执行时间的影响有多大?
【问题讨论】:
-
根据您的代码在做什么,将
Application.Calculation设置为“手动”通常也会大大提高速度。对于长时间运行的宏,您通常会同时执行这两种操作。不过不要忘记重置计算 - 这是一个持久设置。 -
Aslo,关闭运行
Screenupdating,您可以通过Application.Statusbar =让用户知道进度。然后设置为False使其恢复正常。有些人需要看到进展,否则他们认为他们的计算机已冻结并强制关闭所有内容。 -
我也看过,Excel中默认的数据格式其实是Currency,所以最好尽量使用Currency作为数据值而不是Double,避免数据转换。
-
附注:您可以不时将
DoEvents放入您的代码中,以防止您的Excel 冻结。我在循环中执行if n mod 5000 then DoEvents之类的操作以保持 Excel 响应,同时也防止减速。它似乎运作良好......
标签: vba excel optimization