阅读(4991) (1)

完善Excel宏代码的步骤及技巧

2016-10-20 13:48:50 更新
录制宏后,你可能会发现宏可以进行一些别的操作。如果你已经熟悉了VB语言,要往宏里面加指令并不是一件困难的事情。然而,在绝大多数情况下,你可以将这些工作交给Excel宏录制器,从而更有效地完成这项工作。你也许会说,Excel录制了太多的不需要的指令。但是,肯定的是,宏录制器不会犯错,你完全可以依赖于它。


如果你想要通过宏录制器在你的代码里添加指令,那么你必须录制一个新宏,然后复制需要的部分再粘贴到原来代码的正确位置。


我们来给A1:B3添加粗边框:


VB编辑器

如果你从VB编辑器运行宏时,想观察宏的运行情况,你必须将Excel界面和VB编辑器并排地布置在一起


1、激活图1-6看到的Excel界面


2、选择“工具”-“宏”-“录制新宏”


3、在宏对话框点击确定,接受默认的宏名并开始录制


4、选择区域A1:B3


5、选择“格式”-“单元格”,点击“边框”页


6、在“边框样式”部分,点击“外部”按钮


7、在边框粗细列表,点击最粗的,再点击确定关闭对话框


8、点击单元格A1。注意,A1:B3区域有了粗边框。


9、点击“停止录制”按钮,或者选择“工具”-“宏”-“停止录制”


切换置VB编辑器窗口,查看你录制的宏。给A1:B3(译者:原文为A1:A3)添加粗边框的代码如下:


Sub Macro2()

'
' Macro2 Macro
' Macro recorded 5/31/2002 by Julitta Korol
'
'
          Range("A1:B3").Select
          Selection.Borders(xlDiagonalDown).LineStyle = xlNone
          Selection.Borders(xlDiagonalUp).LineStyle = xlNone
          With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                    .ColorIndex = xlAutomatic
          End With
          With Selection.Borders(xlEdgeTop)                    
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                    .ColorIndex = xlAutomatic
          End With
          With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                    .ColorIndex = xlAutomatic
          End With
          With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                    .ColorIndex = xlAutomatic
          End With
          Selection.Borders(xlInsideVertical).LineStyle = xlNone
          Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
          Range("A1").Select
End Sub


现在,我们来分析一下这些录制的代码。你认为你可以去掉其中的一些指令吗?在你删除这些不必要的代码之前,考虑使用注释。在你删除任何代码之前,请将它们注释掉,然后运行宏。如果VB没有出现任何错误信息,那么你就可以安全地删除这些被注释了的代码。如果每次都按照这个指导思想,你就不会重复录制相同的操作了如果这个宏命令没有正确地运行,那么你需要去掉刚才的注释,毕竟,这些代码可能是必须的。


当你使用宏录制器来创建宏的时候,你可以很快地掌握Excel菜单选项和对话框设置在VBA里的等同方法。然后,你可以在在线帮助里面查找这些VB指令的意思和用法。很显然,VB要执行越多的指令,宏运行的速度就越慢。去掉那些无关紧要的命令会加速宏的运行。然而,为了使你的代码容易理解,你需要戴上你的侦探帽子,寻求最佳途径。


例如,看一下你录制的给选中的单元格加外框的宏。看上去,宏录制器是在分别地给每一条线进行设置。VB没有一个简单的一句命令来给选中的区域加外边框,这似乎很难理解。学习任何语言中正确的词语和表达是很费时的。时间一长,你会发现VB实际上有一个另外的方法BorderAround让你在单元格区域添加边框和设置颜色,线型和新边框的粗细。


下面的语句是VBA中给选中的单元格设置外围粗边框的最佳方法:

Range("A1:B3").BorderAround Weight:=xlThick
26
  
上面的指令使用Range对象的BorderAround方法。它给A1:B3区域添加了一个粗线外框。(下一章涵盖了VB对象,属性和方法)。


现在我们将上面的指令加到宏WhatsInACell里面去:


1、激活含有宏WhatsInACell的代码窗口


2、在ActiveCell.FormulaR1C1 = "Formulas"之后插入一行


3、在空白行加入以下指令:

Range("A1:B3").BorderAround Weight:=xlThick 4


4、光标放在宏代码的任何位置,按F5运行修改好的代码。


技巧:附加指令

要在现存的代码中添加指令的话,通过在需要的位置按回车键加入空白行,并且输入必要的VB语句。如果附加指令是键盘操作或菜单命令的话,你可以使用宏录制器来创建必要的代码,然后将它们复制粘贴到原来的宏里面。


假设你想要VB在执行完最后一行代码时给你提示,这种操作是不可能被录制下来的,因为Excel没有相应的菜单选项。但是,你可以手动使用VB语言在你的代码里面添加指令。


1、在代码窗口下,在End Sub前回车


2、光标放在空白行,输入下列语句:

MsgBox "所有操作都已完成。"(译者:英文状态下的引号。)


3、确保光标在代码里,按下F5


4、VB执行完最后一个指令后,弹出这个信息。点击确定。你现在知道宏已经运行完成。

MsgBox是用得非常频繁的VBA函数之一,你将在后面的章节中学习它的使用。


重新命名宏

在代码里面添加了一些代码后,为了更好地反映这个宏的目的,你需要将其改名。过程的名称应该越接近它的功能越好。你不需要按任何键就可以更改宏名。在代码窗口,你将关键词Sub后面老的宏名清除,并且打入新的名称即可。