2024年3月10日发(作者:)

Excel VBA编程 清理宏代码

当了解了宏代码后,有时会发现Excel录制的代码中,有许多并不需要包含进去的信息。

这些信息占用了大量的内部空间,同时也延长了宏的执行时间。想要改善这一情况,则需

要对宏中多余代码进行清理。

录制宏时,系统有时会自动的录制一些不需要的代码,这时就需要将其清理。例如,

在录制宏“单元格的设置”后,要录制的内容包含了对单元格“字体”的设置,如字体为

“楷体”、字号为“18”。该宏代码如下:

With

.Name = "楷体_GB2312"

.Size =11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade =0

.ThemeFont = xlThemeFontNone

End With

With

.Name = "楷体_GB2312"

.Size = 18

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

= True

上述代码中除了录制了指定的内容,另外Excel还自动录制了【开始】选项卡中【字体】

栏的其它选项,如删除线,上标,下标,阴影和下划线,而这些设置并不需要,需要将其

清理。

原因,在录制宏时,使用了【开始】选项卡的【字体】组中的选项,则Excel将自动录

制该组中其他选项的设置。这些不需要录制的代码使得“宏”代码冗长而难以理解。因此,

在完成录制宏后,最好检查一遍录制好的代码,并删除不必要的行。

删除第一个With…End With块。这段代码在录制宏时,为中间步骤生成的代码,并不

是实质性的操作代码。如在设置“字体”和“字号”时,用户要的是设置完这两项后的代

码,而在实际操作中,当用户设置完“字体”项后,Excel就会自动生成【字体】组中其他

选项的设置。当用户再设置“字号”时,Excel又会生成另外一段相近的代码,因而这段代

码为中间代码。

删除带删除线的行,这段代码为自动生成的选项的设置:

With

.Name = "楷体_GB2312"

.Size = 18

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

= True

上述代码删除线的代码,是【字体】组中其他选项的设置代码,这些选项并未进行设

置,所以清除这语句。清除后,在关键词With和End With之间只剩下了两句代码,这些才

是在录制宏的时候真正做的设置:

With

.Name = "楷体_GB2312"

.Size = 18

End With

= True