按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
1. 在下面的代码中,删除带删除线的行:
With Selection。Font
。Name = 〃Arial〃
。FontStyle = 〃Bold〃
。Size = 10
。Strikethrough = False
。Superscript = False
。Subscript = False
。OutlineFont = False
。Shadow = False
。Underline = xlUnderlineStyleNone
lorIndex = 13
End With
清除后,在关键词With和End With之间只剩下了两句代码,这些才是你在录制宏的时候真正做
的设置:
With Selection。Font
。FontStyle = 〃Bold〃
lorIndex = 13
End With
2. 找到设置数字单元格格式的代码,依照下面的例子修改代码:
' Find and format cells containing numbers
With Selection
。SpecialCells(xlCellTypeConstants; 1)。Select
。FontlorIndex = 11 ' Sets the font color to Violet
End With
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里面去:
1. 激活含有宏WhatsInACell的代码窗口
2. 在ActiveCell。FormulaR1C1 = 〃Formulas〃之后插入一行
3. 在空白行加入以下指令:
Range(〃A1:B3〃)。BorderAround Weight:=xlThick 4
4. 光标放在宏代码的任何位置,按F5运行修改好的代码。
技巧1-7:附加指令
要在现存的代码中添加指令的话,通过在需要的位置按回车键加入空白行,并且输入必要的VB语句。
如果附加指令是键盘操作或菜单命令的话,你可以使用宏录制器来创建必要的代码,然后将它们复
制粘贴到原来的宏里面。
假设你想要VB在执行完最后一行代码时给你提示,这种操作是不可能被录制下来的,因为Excel没
有相应的菜单选项。但是,你可以手动使用VB语言在你的代码里面添加指令。
1. 在代码窗口下,在End Sub前回车
2. 光标放在空白行,输入下列语句:
MsgBox 〃所有操作都已完成。〃(译者:英文状态下的引号。)
3. 确保光标在代码里,按下F5
4. VB执行完最后一个指令后,弹出这个信息。点击确定。你现在知道宏已经运行完成。
MsgBox是用得非常频繁的VBA函数之一,你将在第四章中学习它的使用。
13 重新命名宏
在代码里面添加了一些代码后,为了更好地反映这个宏的目的,你需要将其改名。过程的名称应该
越接近它的功能越好。你不需要按任何键就可以更改宏名。在代码窗口,你将关键词Sub后面老的
宏名清除,并且打入新的名称即可。
14 运行宏的其它方法
到现在为止,你已经学习了运行宏的方法。你已经知道通过选择“工具”-“宏”-“运行宏”来
运行宏。不幸的是,如果你需要经常运行宏,这种方法是不方便的。你也可以在VB编辑器窗口使用
快捷键F5或者通过选择“运行”-“运行模块/窗体”来运行宏。此外,你还可以在VB编辑器窗口
点击标准工具栏上的按钮来运行宏(见图1-7)。
图1-7 VB过程可以通过标准工具栏来运行
15 使用键盘快捷键运行宏
流行的方法是通过设置一个快捷键来运行宏。按Ctrl+Shift+D比从宏对话框激活宏要容易得多。你
必须给宏设置一个快捷键,之后才能使用它。
1. 按Alt+F8快速打开宏对话框
2. 点击宏清单里的WhatsInACell,然后选择选项按钮
3. 弹出宏选项对话框,如图1-8。光标定位在快捷键文本框里
4. 按下Shift键和键盘是的字母I。Excel录制下了快捷键Ctrl+Shift+I
5. 点击确定以关闭宏选项对话框
6. 点击取消返回工作表。试试用你刚设置的快捷键来运行宏,确保激活了Excel窗口,然后按下
Ctrl+Shift+I
27
… 页面 44…
图1-8 使用宏选项对话框设置键盘快捷键来运行宏
技巧1-8:避免快捷键冲突
如果你给宏设置的快捷键和Excel内置的快捷键冲突,而且你打开的又正是含有那个宏的工作表,
那么按下该快捷键后Excel会运行你自己的宏。
16 通过菜单运行宏
如果你宁愿通过菜单来运行宏,那么你可以将你的宏做成一个菜单选项。使用“自定义菜单”对话
框,你可以快速的将你的宏命令加入到任何Excel的内置菜单中。
1. 在Excel界面工具栏的空白处,单击右键,选择“自定义菜单”
2. 在自定义菜单对话框选择“命令”页
3. 在“类别”清单里选择“宏”
图1-9 创建自定义菜单(第一步)
4. 将“自定义菜单”拖曳至工具菜单里去。当工具菜单展开时,你可以将按钮放在任意地方。
图1-10显示了自定义菜单在工具菜单的最下面。
28
… 页面 45…
图1-10 创建自定义菜单(第二步),你可以将自定义菜单放在Excel菜单里,也可以放在子菜单里
5. 在菜单项上单击右键,并且在快捷菜单“名称”的文本框里,将其改成你想要的名字(参见
图1-11)。例如,将名称改为“Contents of Ce&lls”。连接符用以表示键盘快捷键。将连接
符放在你想显示下划线的字符之前。这个自定义菜单将会显示为“Contents of Cells”,注
意,菜单里面字与字之间可以有空格。
6. 选择最后一个选项(快捷菜单上)——“指定宏”(参见图1-11)。在宏对话框,选择宏
“WhatsInACell”,点击确定,关闭自定义菜单对话框。
现在,你的宏可以通过自定义菜单来运行了。如果你没有给自定义菜单选项指定宏就关闭了
这个快捷菜单,Excel在你第一次试图使用这个自定义菜单选项时会提示你要宏名。
7. 选择“工具”-“Contents of Cells”,或者按Alt+T和l来运行宏。如果你在做上述操作时,
清除了内置菜单或菜单选项,可以打开自定义菜单对话框,点击工具页,然后选择“重