按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
如果你忘记给宏命名,Excel 会给出一个默认的宏名,例如:Macro1,Macro2,等等。宏名可以包
含字母,数字和下划线,但是第一个字必须是字母(译者:中文亦可,建议用英文)。例如:Report1
是有效的宏名,然而1Report则是非法的。宏名里不能含有空格。如果你隔开宏名中的每个词,可
以使用下划线。例如:WhatsInACell,改为Whats_In_A_Cell。
3. 在宏的存贮位置里,选择“当前工作簿”
技巧1-3:保存宏
Excel 让你可以将宏保存在三个地方:
个人宏工作簿——如果你将宏保存在这里,你每次使用Excel 的时候都可以使用这个宏。个人宏工
作簿在XLStart文件夹中。如果这个工作簿不存在,那么当你第一次使用这个选项的时候,Excel
会自动生成这个工作簿。
新工作簿——Excel将宏放在一个新工作簿里。
当前工作簿——宏将被保存在你正在使用的工作簿里面。
4. 在描述框里输入:显示单元格里潜在的内容:文本,数字,公式
5. 点击“确定”关闭宏录制对话框,并开始录制。这时,出现了“停止录制”工具栏。Excel下
面的状态栏显示“准备录制”
图1-3 停止录制工具栏提供按钮来停止录制,以及让Excel如何在录制宏的时候处理单元格地址
技巧1-4:单元格地址:相对或绝对?
绝对——如果在执行宏命令的过程中,无论哪些单元格被选中了,你都希望宏在特定的单元格执行
这些录制的操作,那么使用绝对单元格地址。绝对单元格引用具有如下形式:A1,C5等。Excel
宏录制器默认使用绝对引用。在录制前,确保停止录制工具栏上的第二个按钮没有被按下去。当鼠
标指向这个按钮,工具提示“相对引用”。
相对——如果你想要宏可以用在任何区域,就打开相对引用。相对引用具有如下形式:A1,C5等。
在录制前,确保停止录制工具栏上的第二个按钮已经被按下去了。记住,Excel 将会继续使用相对
引用,直到退出Excel或者再次点击相对引用按钮。在录制宏的过程中,你可以使用这两种引用方
法。例如:你可以选择一个特定单元格(如A4),做一个操作,然后选择另外一个相对于当前位
置的单元格(如C9,他在当前单元格A4往下5行和向右2列的位置)。当你复制单元格时,相对引
用会自动调整引用,而绝对引用则不会。
6. 从新进行刚才你手动完成的那些操作(参见“写宏之前的计划“)
录制宏的时候,只有当你按下了回车键或者点击了确定之后,你的操作才会被录制。如果
你按下了Esc键或者点击了取消,宏录制器不会录制任何操作。
7. 完成所有操作后,点击停止录制工具栏上的“停止录制”按钮,或者选择“工具”-“宏”
-“停止录制”
5 运行宏
你创建了一个宏命令后,至少要运行一次以确保它运行正确。在本章的后面,你将学到好几种运行
宏的方法,不过,现在,使用菜单命令。要看到你的成果,确保清除了例子的格式。按下Ctrl+A
以选中整个工作表,选择“编辑”-“清除”-“格式”选择A1:A3并且选择“编辑”-“删除”。
在“删除”对话框,选择“整行”然后点击“确定”。稍后,你将在另外一个宏里面录制清除工作
表格式的步骤。
1. 打开任何包含文本,数字和公式的工作表
2. 选择“工具”-“宏”-“运行宏”来打开宏对话框
3. 点击你要运行的宏的名称(参见图1-4)
4. 选择“运行”,执行宏
18
… 页面 35…
图1-4 在宏对话框,你可以选择一个宏,运行,编辑或者删除它
你也许经常会发现录制的宏不会按你预期的和你第一次操作那么运行。也许在录制宏的时候,你选
择了错误的字体,或者忘记改变单元格颜色,或者你临时发现最好加上一个步骤。不必惊慌。Excel
允许你修改代码,而不会强迫你重新录制那些单调的操作。
6 修改宏代码
你必须知道你的宏代码放在哪里,你才能找到并修改它。回想你打开宏录制器的时候,你选择了“当
前工作簿”作为存储地址。最容易找到宏的方法是打开宏对话框,如图1-4所示。
1. 选择“工具”-“宏”
2. 选择宏名(本例中为WhatsInACell)
3. 点击“编辑”按钮
Excel 打开一个专门的窗口,叫做Visual Basic Editor (VBE)如图1-5所示。利用快捷键Alt+F11
可快速地在Excel表格界面和代码窗口切换。选择VBE菜单上的关闭选项可以关闭VBA代码窗口,返
回到电子表格界面。
代码窗口暂时看上去有些令人迷惑,不必担心。只要你开始录制宏,以及尝试写一些代码,你终将
这个屏幕所有的组件。现在,看一下代码窗口的菜单和工具栏。这两个工具栏和Excel 窗口的菜单
完全不同。代码窗口的菜单和工具包含一些编程和测试代码所需要的工具。只要你彻底地学习本书
的每一章,你就会成为使用这些工具的专家。
图1-5 VBE窗口是编辑宏命令和书写新的VBA代码的地方
VBE窗口的主要部分是多个窗口的集合界面,这些窗口在你创建和测试VBA过程的时候是及其有用
19
… 页面 36…
的。图1-5显示了三个集合在一起的窗口:工程窗口,属性窗口和代码窗口。工程窗口显示一个开
启的模块文件夹,在这里,模块1被选中了。Excel 录制你在工作表里的操作叫做模块1,模块2,
等等。在本书接下来的章节里,你将利用模块来编写你自己的过程代码。模块类似于Word中的一个
空白文档。储存每个单独模块的文件夹称为“模块”
技巧1-5:宏还是过程?
宏是通过内置宏录制器录制的,或者在VB编辑器里手动输入的一系列指令或函数。从Excel 5。0开
始,“宏”经常被“过程”这个更广的概念所代替。尽管这两个词可以交替互换使用,但是,许多
编程者更喜欢“过程”。虽然宏可以让你模仿键盘操作,真正的过程则还可以执行一些不能通过鼠
标,键盘或者菜单来做的操作。换句话说,过程是一个更复杂的宏,它结合了传统编程语言的言语
结构。
代码窗口(参见图1-5)显示了下列由宏录制器录制的代码:
Sub WhatsInACell()
'
' WhatsInACell Macro
' Macro recorded 5/31/2002 by Julitta Korol
' Indicates the contents of the underlying cells: text; numbers; formulas。
'
Selection。SpecialCells(xlCellTypeConstants; 2)。Select
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
Range(〃B6〃)。Select
Selection。SpecialCells(xlCellTypeConstants; 1)。Select
With Selection。Font
。Name = 〃Arial〃
。FontStyle = 〃Regular〃
。Size = 10
。Strikethrough = False
。Superscript = False
。Subscript = False
。OutlineFont = False
。Shadow = False
。Underline = xlUnderlineStyleNone
lorIndex = 11
End With
Range(〃C6〃)。Select
Selection。SpecialCells(xlCellTypeFormulas; 23)。Select
With Selection。Font
。Name = 〃Arial〃
。FontStyle = 〃Bold〃
。Size = 10
20
… 页面 37…
。Strikethrough = False
。Superscript = False
。Subscript = False
。OutlineFont = False
。Shadow = False
。Underline = xlUnderlineStyleNone
lorIndex = 3
End With
Range(〃A1:A3〃)。Select
Selection。EntireRow。Insert
Range(〃A1〃)。Select
With Selection。Interior
lorIndex = 13
。Pattern = xlSolid
。PatternColorIndex = xlAutomatic
End With
Range(〃B1〃)。Select
ActiveCell。FormulaR1C1 = 〃Text〃
Range(〃A2〃)。Select
With Selection。Interior
lorIndex = 5
。Pattern = xlSolid
。PatternColorIndex = xlAutomatic
End With
Range(〃B2〃)。Select
ActiveCell。FormulaR1C1 = 〃Numbers〃
Range(〃A3〃)。Select
With Selection。Interior
lorIndex = 3
。Pattern = xlSolid
。PatternColorIndex = xlAutomatic
End With
Range(〃B3〃)。Select
ActiveCell。FormulaR1C1 = 〃Formulas〃
Range(〃B4〃)。Select
End Sub
从现在开始,让我们注重于寻找下面两个问题的答案:如何阅读宏代码?如何修改宏代码?
7 添加注释
看一下录制的宏代码,请注意那些开头带单引号的行。这些行就是注释。注释默认显示为绿色。执
行宏代码时,VB会忽略这些注释行。注释经常和宏代码放在一起,来整理那些意义不甚明显的语句。
现在,我们来给宏WhatsInACell 添加注释。
1. 激活VBE窗口
2. 在Selection。SpecialCells(xlCellTypeConstants; 2)。Select前面点击一下,将光标移至该
语句开头,回车
3. 将光标往上移一行到空白处,并且添加如下注释,注意前面有单引号(译者:英文状态下的
单引号)
‘ Find and format cells containing text
4. 在Selection。SpecialCells(xlCellTypeConstants; 1)。Select前面点击一下,将光标移至该
21
… 页面 38…
语句开头,回车
5. 将光标往上移一行到空白处,并且添加如下注释,注意前面有单引号(译者:英文状态下的
单引号)
‘ Find and format cells containing numbers
6. 在Selection。SpecialCells(xlCellTypeFormulas; 23)。Select前面点击一下,将光标移至该
语句开头,回车
7. 将光标往上移一行到空白处,并且添加如下注释,注意前面有单引号(译者:英文状态下的
单引号)
‘ Find and format cells containing formulas
8. 在Range(〃A1:A3〃)。Select前面点击一下,将光标移至该语句开头,回车
技巧1-6:关于注释
在VBE代码窗口里,以单引号开头的都是注释。注释的默认颜色是绿色。可以通过“选项”对话框
(“工具”-“选项”-“编辑器格式”)更改注释颜色。注释也可以写在代码的后面。例如,在语
句lorIndex = 11之后添加注释。点击该语句句末,按下Tab键,输入单引号,然后输入注释。
显示如下:
lorIndex = 11 ' Sets the font color to Violet
注释除了给用户提供代码目的信息之外,没有任何作用。请别忘记给你的代码写上注释。如果你几
个月后还要回到你的代码,那么注释将帮你大忙。同样,注释可以使别人很快理解你的程序。
9. 将光标往上移一行到空白处,并且添加如下注释,注意前面有单引号(译者:英文状态下的
单引号)
‘Create legend
8 分析宏代码
所有宏过程都以关键词“Sub”开始,以关键词“End Sub”结束。在关键词“Sub”之后是宏的真
正的名字,然后紧跟着是一对括号。在关键词Sub 和End Sub之间是那些你每次运行宏代码时VB执
行的语句。VB从上到下读取语句,忽略那些句前带单引号的语句(参见上节关于注释的内容),读
到End Sub时停止。请注意,录制的宏代码里包含许多停顿(译者:英文模式下的句号)。每行代码
中都有停顿,用来连接VBA语言中不同的要素。如何阅读这种语言的用法呢?要从最后一个停顿的
右边向左读。看看WhatsInACell里的一些语句:
Range(〃A1:A3〃)。Select
选择A1到A3单元格
Selection。EntireRow。Insert
往选中的区域中插入行。因为前面你选中的是三个单元格(译者:应该说是占据了三行的单元格),
VB将插入三行。
ActiveCell。FormulaR1C1 = 〃Text〃
往当前单元格里输入“Text”。因为,之前的代码是Range(〃B1〃)。Select,选择单元格B1,B1是当
前激活的单元格,所有VB往B1单元格里面输入文本。
With Selection。Interior
lorIndex = 3
。Pattern = xlSolid
。PatternColorIndex = xlAutomatic
End With
这是一段特别的代码块,解释如下:给当前选中的单元格设置单元格填充色为红色(ColorIndex =
3),设置填充模式为实心(xlSolid),并且给当前单元格明确为默认的填充模式(xlAutomatic)。
这个代码块以关键词With开始,End With结束,它将加速宏代码的执行。宏代码知道走捷径,而不
会每次都重复下面的说明:
Selection。InteriorlorIndex = 3
Selection。Interior。Pattern = xlSolid
Selection。Interior。PatternColorIndex = xlAutomatic
在关键词With后面紧跟重复的Selection。Interior,再以End With结尾。
22
… 页面 39…
9 清除宏代码
你已经逐行解析了你宏代码,你会发现Excel录制了许多你并不想要包含进去的信息。例如,在选
中了文本单元格后,除了设置字体为粗体和颜色为紫色之外,Excel 还录制了其它在字体页的选项
——字体名称,字体大小,删除线,上标,下标,阴影和下划线。请看下列代码片断:
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
如果你使用了对话框,Excel总会录制所有的设定。这些多余的代码使得你的宏代码冗长而难以理
解。因此,你完成录制宏后,最好检查一遍你录制的代码并删除不必要的行。
1. 在下面的代码中,删除带删除线的行:
With Sele