JSRUN 用代码说话

完善宏代码

编辑教程

完善宏代码

录制宏后,你可能会发现宏可以进行一些别的操作。如果你已经熟悉了VB语言,要往宏里面加指令并不是一件困难的事情。

然而,在绝大多数情况下,你可以将这些工作交给Excel宏录制器,从而更有效地完成这项工作。

你也许会说,Excel录制了太多的不需要的指令。但是,肯定的是,宏录制器不会犯错,你完全可以依赖于它。

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

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

VB编辑器

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

激活Excel界面
选择“工具”-“宏”-“录制新宏”
在宏对话框点击确定,接受默认的宏名并开始录制
选择区域A1:B3
选择“格式”-“单元格”,点击“边框”页
在“边框样式”部分,点击“外部”按钮
在边框粗细列表,点击最粗的,再点击确定关闭对话框
点击单元格A1。注意,A1:B3区域有了粗边框。
点击“停止录制”按钮,或者选择“工具”-“宏”-“停止录制”

切换置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里面去:

激活含有宏WhatsInACell的代码窗口
在ActiveCell.FormulaR1C1 = "Formulas"之后插入一行
在空白行加入以下指令:
Range("A1:B3").BorderAround Weight:=xlThick 4
光标放在宏代码的任何位置,按F5运行修改好的代码。

技巧:附加指令

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

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

在代码窗口下,在End Sub前回车
光标放在空白行,输入下列语句:
MsgBox "所有操作都已完成。"(译者:英文状态下的引号。)
确保光标在代码里,按下F5
VB执行完最后一个指令后,弹出这个信息。点击确定。你现在知道宏已经运行完成。
MsgBox是用得非常频繁的VBA函数之一,你将在后面的章节中学习它的使用。

重新命名宏

在代码里面添加了一些代码后,为了更好地反映这个宏的目的,你需要将其改名。

过程的名称应该越接近它的功能越好。你不需要按任何键就可以更改宏名。

在代码窗口,你将关键词Sub后面老的宏名清除,并且打入新的名称即可。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟