弗雷德里克(Fredric)写了一篇关于宏的问题。当他使用F8在VB编辑器中运行宏时(逐步执行宏),只需几分钟即可完成。当他直接运行宏时,似乎要花很长时间才能运行,通常要花20分钟或更长时间才能执行。即使Fredric的工作簿很大(46 MB),两种运行方法之间的时差还是很麻烦的。

诸如此类的问题可能令人困惑,并且它们通常需要进行一些繁重的分析才能弄清楚。一个好的开始是在宏中添加一些“计时器代码”。添加一个小的例程来保存时间值,并添加另一个例程,该例程将保存的值与当前时间进行比较并显示时差。在您要分析的代码部分的开头,调用第一个例程(这样可以节省启动时间)

然后在代码部分的末尾调用第二个例程。

这样,您可以确定代码的哪些部分执行时间最长。这些是您随后关注的代码部分,因此您可以弄清楚它们正在做什么,这花费了很长时间。

要确保的另一件事是在宏的开头添加以下两行:

Application.ScreenUpdating = False Application.EnableEvents = False

这些关闭屏幕更新,这可能会减慢正在运行的宏的速度,并禁用事件。包括最后一行,以便工作表中的宏所做的更改不会触发Excel的重新计算例程。如果您的宏在工作表中的数据上进行了大量更改,并且每次更改后都触发了完整的重新计算,那么使用如此大的工作簿,仅花费大量时间进行重新计算即可。在宏的最后,您颠倒了添加的两行的效果:

Application.EnableEvents = True Application.ScreenUpdating = True

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2436)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: