宏正确运行后,可使我们的生活更轻松。 (如果它们运行不正常,那么生活肯定就不容易。)如果您有一个宏可以为您做很多工作,那么您可能会对尝试使其运行更快感兴趣。

当然,要做的第一项任务是检查宏,并查看算法(您决定做事的方式)是否尽可能高效。一旦感到满意,您还可以通过在同一行上简单地放置多个语句来加快宏的速度。考虑下面的简单宏,该宏查找文档中某事的先前出现:

Sub PrevFind()

With Selection.Find       .ClearFormatting       .Forward = False       .Wrap = wdFindAsk       .Execute    End With End Sub

这个宏非常简单。保存宏时,宏中包含的语句将解析为三字节的令牌,VBA可以更有效地运行它们。 (您永远不会看到令牌;您只会看到与令牌等效的宏语言。)运行宏时,VBA命令处理器一次抓取一行并在该行上执行所有令牌。因此,在前面,有八行由处理器分别获取和执行。

现在考虑相同宏的以下版本:

Sub PrevFind()

With Selection.Find    .ClearFormatting: .Forward = False: .Wrap = wdFindAsk: .Execute End With: End Sub

此版本似乎短得多,因为各个行已连接在一起并用冒号分隔。这会降低宏的可读性,但会提高宏的执行速度。为什么?

因为VBA命令处理器仍然一次抓住一行来处理。在这种情况下,只有四行要抓。更少的“抓取时间”意味着执行速度更快。该宏的第三行曾经占用了四行,现在被当作一行处理。

将多个语句放在同一行上确实会降低宏的可读性。但是,根据您的需求,这可能是您可以实现的速度提升的合理权衡。您将需要在自己的宏中尝试该技术,以查看它是否对您有意义。

注意:

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

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(1640)适用于Microsoft Word 97、2000、2002和2003。