按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
Range(〃C6〃)。Select
3. 找到设置公式单元格格式的代码,依照下面的例子修改代码:
' Find and format cells containing formulas
Selection。SpecialCells(xlCellTypeFormulas; 23)。Select
With Selection。Font
。FontStyle = 〃Bold〃
lorIndex = 3
23
… 页面 40…
End With
4. 找到下述两行代码:
Range(〃A1:A3〃)。Select
Selection。EntireRow。Insert
5. 用下面的一句代码取代上面的两句代码:
Range(〃A1:A3〃)。EntireRow。Insert
注意,Excel使用了R1C1形式来设置选中单元格个公式:
ActiveCell。FormulaR1C1 = 〃Text〃
ActiveCell。FormulaR1C1 = 〃Numbers〃
ActiveCell。FormulaR1C1 = 〃Formulas〃
宏录制器使用了一次“ActiveCell”和一次“Selection”来选择当前单元格。这两个词都称为属
性。你将在第二章里学习属性。当仅有一个单元格被选中时,你可以随意使用“ActiveCell”或者
“Selection”。
10 测试修改好的宏
当你修改宏的时候,很可能会带入一些错误。例如,你可能会删除一行重要的代码,或者可能不注
意清除或忽略了一个逗点(停顿)。为了确保你的宏在你修改之后还能正确地工作,你必须运行它。
在VBE窗口,将光标放在宏代码WhatsInACell的任意行,选择“运行”-“运行模块/窗体”
如果你在修改代码的时候,没有带入任何问题,那么宏将顺利运行,而不会有任何报错。你需要切
换到Excel界面取看你的宏运行的结果。你可以点击任务栏,或者按Alt+F11回到Excel界面。
如果宏在运行的过程中遇到错误,你将会看到一个对话框显示发现的错误类型。在你运行宏命令之
前,你必须确保你的宏可以在当前激活的工作表里面运行。例如,你当前电脑上激活的时一个空的
Excel工作表,你试图运行WhatsInACell,这时你将看到一个错误信息:“运行时间错误‘1004’-
找不到单元格”。点击“结束”按钮,在你重新运行宏之前,确保选择了正确的工作表。
如果选择的工作表只含有文本,你在运行WhatsInACell的时候,VB试图选择含有数字的单元格时会
遇到同样的“找不到单元格”的错误。
如果你忽略了With Selection。Font中的逗点,VB会出现“运行时间错误‘424’-需要对象”的信
息。点击信息框上的“调试”按钮,你将进到代码窗口。同时,VB会进入“中断”模式,并且将有
问题的行用黄色突出出来。在你更正代码后,VB可能会弹出信息:“这个操作将会重置你的工程,
继续?”点击确定。尽管你可以在中断模式修改代码,但是,有些修改会终止宏的继续执行。更正
宏代码后,重新运行它,也许你会需要解决更多的错误,之后才能顺利地运行它。你将在第二章和
第十三章里面学到更多的关于如何处理VBA错误的方法。
11 两个层面运行宏的方法
你既可以在Excel界面运行宏,也可以在VB编辑器界面运行它。当你从VB编辑器屏幕执行
WhatsInACell时,VB在屏幕之后执行这些代码。你看不到VB选择和设置格式,也看不到VB插入三空
行做图例。为了观察到VB的执行情况,你必须在Excel界面,通过选择“工具”-“宏”,或者将你
Excel界面和VB编辑器界面同时显示在电脑屏幕上(参见图1-6)
24
… 页面 41…
图1-6 如果你从VB编辑器运行宏时,想观察宏的运行情况,你必须将Excel界面和VB编辑器并排地
布置在一起
按照下列步骤来并排布置你的Excel界面和VB编辑器界面:
1. 在任务栏上的空白处单击右键。任务栏在屏幕的下端,“开始”按钮的位置。
2. 下列菜单中,选择“纵向平铺窗口”
3. 最小化那些不需要的窗口,重复步骤1
4. 现在,两个窗口并排显示了,点击代码的任意位置,然后按下“F5”(或者选择“运行”-“运
行模块/窗体”)。坐好,观察你录制的宏在运行,不是很激动吗?稍后,你将学习如何将VB慢
慢运行,这样你 就可以一步一步地观察宏代码的运行情况。
12 完善你的宏代码
录制宏后,你可能会发现宏可以进行一些别的操作。如果你已经熟悉了VB语言,要往宏里面加指令
并不是一件困难的事情。然而,在绝大多数情况下,你可以将这些工作交给Excel宏录制器,从而
更有效地完成这项工作。你也许会说,Excel录制了太多的不需要的指令。但是,肯定的是,宏录
制器不会犯错,你完全可以依赖于它。
如果你想要通过宏录制器在你的代码里添加指令,那么你必须录制一个新宏,然后复制需要的部分
再粘贴到原来代码的正确位置。
我们来给A1:B3添加粗边框:
1. 激活图1-6看到的Excel界面
2. 选择“工具”-“宏”-“录制新宏”
3. 在宏对话框点击确定,接受默认的宏名并开始录制
4. 选择区域A1:B3
5. 选择“格式”-“单元格”,点击“边框”页
6. 在“边框样式”部分,点击“外部”按钮
7. 在边框粗细列表,点击最粗的,再点击确定关闭对话框
25
… 页面 42…
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
lorIndex = xlAutomatic
End With
With Selection。Borders(xlEdgeTop)
。LineStyle = xlContinuous
。Weight = xlThick
lorIndex = xlAutomatic
End With
With Selection。Borders(xlEdgeBottom)
。LineStyle = xlContinuous
。Weight = xlThick
lorIndex = xlAutomatic
End With
With Selection。Borders(xlEdgeRight)
。LineStyle = xlContinuous
。Weight = xlThick
lorIndex = 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
… 页面 43…
上面的指令使用Range对象的BorderAround方法。它给A1:B3区域添加了一个粗线外框。(下一章涵
盖了VB对象,属性和方法)。
现在我们将上面的指令加到宏WhatsInACell里面�