excel_vba_编程教程(完整版)-第18部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
标题栏下面的对象栏。对象的属性可以按照字母顺序查看,也可以按类别查看(参见图1-19)。
图1-19 属性窗口显示的是当前被选中的对象的属性设置
择新的设置,来更改属性设置。
展开类别查看属性。类别名称左边的加号(+)说明这个类别可以展开。减号(-)说明这个
类别已经展开。
有三种方式可以进入属性窗口:
26 了解代码窗口
代码窗口是用来VB编程的,也是用来查看,修改录制的宏代码和现存的VBA工程的。每个模块会以
一个专门的窗口打开。有好几个方法可以激活代码窗口:
36
… 页面 53…
在代码窗口的上面,有两个下拉清单列表(参见图-20),方面你快速地移动到任意代码处。在代
码窗口左上角的对象列表框,你可以选择你想查看代码的对象。你可以在代码窗口右上角的列表框
里选择一个过程或者事件过程查看代码。当你打开这个列表框,这个模块里的所有过程名按字母顺
序排列在那儿。如果你选择了一个过程,光标就会跳到那个过程的第一行处。
将列分工具条(参见图1-20)拖曳下列,你就可以将代码窗口分为两半了(参见图1-21)。
图1-20 代码窗口有几个部分,使得定位过程和查看代码变得很轻松
你可以查看不同的代码部分了。这样设置代码窗口,目的是方便在同一个模块内的过程里复制或剪
切,并且粘贴代码片断。只要简单地将列分工具条拖曳至代码窗口上面就行。代码窗口的底部有两
个图标。点击“过程查看”图标,代码窗口里一次只显示一个过程,可以通过过程/事件列表框选
择另外的过程。点击“全部模块查看”则可以显示这个模块里的所有过程。使用竖向滚动条可以在
代码中滚动。
页边指示工具条是在修改代码和调试是提供一些帮助指示的。如果你想快速查看关于指示的信息,
请看第十三章。
37
… 页面 54…
图1-21 你可以将代码窗口列分为两个窗口来查看长过程
27 VB 编辑器里的其它窗口
除了代码窗口,VB环境下还有很多其它窗口频繁地被使用:
窗体窗口用来创建自定义对话框和用户窗体。
图1-22 在选项里,你可以选择显示哪些窗口
你将在第十章里学习到更多的这类知识。
图1-22显示了一些可以显示了VB编辑器里的窗口清单。你将在第二章里(对象浏览器,立即窗口)
38
… 页面 55…
和在第三章里(当地窗口,观察窗口)学习如何使用这些窗口。
28 接下来……
通过一些电子表格自动化的例子,你不但已经如何录制宏,而且也已经学习了如何查看,阅读和修
改VB代码。还有,你也尝试了用许多方法运行。最后,你还快速过了一遍VB编辑器窗口。
在下一章,我们将会给你介绍VBA基础,你将学习许多新术语,更重要的是,你将获得有用的VBA
词汇表,这将帮你将更多的任务交给Excel帮你完成。
第二章 VBA 第一步
作者:Julitta Korol 翻译:Tiger Chen Nov 28’ 2004
语言学习是一个长期的活动,在此过程中,你会经历不同的阶段,由生疏到熟悉。学习VBA编程也
是一样的,没有捷径。要想精通VBA,你必须从一个初级阶段起步(第二至四章)。只有当你对VBA
后面的一些基本的东西有了很好的理解之后,才能提高到中级阶段(第五至七章)和高级阶段(第
八至十七章)。但是,重要的事情先来。在你能够用VBA自由自在地控制Excel之前,你需要获得一
些你的术语和语法。在VB里,如何表达这些?“在工作簿里添加一个新工作表”,“删除单元格A5
的内容”,“将单元格A1的公式复制到单元格B1”?你也许知道这些单个的词语,然而,你怎么知道
如何将它们正确地组合在一起,Excel才能执行这些任务?你将在本章中学习VBA的术语和规则。
1 了解指令,模块和过程
在第一章,你学习到了Excel宏录制器创建的一系列指令是和你实际进行的操作完全等同的。这些
指令自动地放在工作簿里一个叫做“模块”的表里。Excel将模块储存在模块文件夹里,这个文件
夹在当前工作簿,新工作簿或者个人宏工作簿里面。你必须激活VB编辑器窗口,并且双击工程浏览
器里的模块文件夹才能查看到这些模块。当模块表在代码窗口里打开了后,你才能最后分析你的过
程代码。
所有录制的指令都包括在“过程”里面。过程里面的每一行都是一个“指令”。指令的类型有很多
中,例如,关键词,运算符,或者其它过程的调用。“关键词”代表VB中的一个特殊的意义。在第
一章中,你学习了最常见的VBA关键词——Sub 和End Sub,它们表示一个过程的开始和结束。关键
词默认地显示为蓝色。你不要将这些术语做其它的目的,因为关键词已经被VB保护了。
除了关键词,VB指令里还可以有运算符。运算符有四种类型:算术运算,字符串连接,逻辑运算和
比较运算。“运算符”允许你将某些值结合起来。例如,减号运算符(/)可以用来计算总数的百分
比。本书中,你有很多机会看到如何在VBA过程中使用运算符。
VB指令的另外一种类型是过程调用。过程调用让你快速地跳到其它过程并且执行其它指令。是不是
很难想象?让我们看一下你在第一章中录制的宏WhatsInACell。 假设你也需要包含同一模块中宏
FormulasOnOff中的一些语句。怎么做呢?你可以复制需要的代码行,再粘贴过去。然而,有一种
更简单快速的方法。你可以调用这个过程,而不需要在两个过程中复制。例如,你想VB在遇到指令
MsgBox 〃所有操作都已完成〃之前执行宏FormulasOnOff里面的指令,只要添加下面一句代码就行:
FormulasOnOff
当VB到达这一行,它就会立即跳到FormulasOnOff过程并且执行它的代码。之后,它会回到宏
WhatsInACell去执行剩下的代码,遇到关键词End Sub时则停止。
在你尝试这个例子之前,你必须学会如何给VBA过程和模块命名,已经如何调用不同工程里的过程。
2 VBA 工程命名
工程是一套Excel对象,模块,窗体和引用。除了VBAProject这个位于工程浏览器中工作簿名称之
前默认名称,每个工程需要一个独特的名称。我们来给VBAProject (Chap01。xls) 和 VBAProject
(Personal。xls)命名:
1。 启动Excel,打开Chap01。xls,这里储存了宏WhatsInACell代码。你录制了宏FormulasOnOff的
个人宏工作簿会自动开启
2。 切换到VB编辑器窗口
3。 选择VBAProject (Chap01。xls)
4。 双击属性窗口里的名称属性,这个操作选中了默认的工程名称VBAProject
5。 输入“FirstSteps”作为该VBA工程的名称,回车。注意,工程浏览器现在显示的是名称是
39
… 页面 56…
FirstSteps (Chap01。xls)
6。 在工程浏览窗口选择VBAProject (Personal。xls)
7。 双击属性里的名称属性
8。 输入“Personal”作为它的名称,回车
技巧2-1 避免名称冲突
为了避免VBA工程之间的命名冲突,请给你的工程独特的名称。你可以使用下述方法之一来更改工
程名称:
工程属性对话框,在工程名称文本框里面输入新的名称
图2-1 工程属性窗口可以用来更改当前被选中的工程名称和描述
3 模块重命名
当你录制宏或者创建新的过程时,VB会创建一个模块文件夹来储存你的VBA 代码。 第一个文件夹
叫“模块1”,第二个叫“模块2”,等等。你打开一个新的工作簿并且创建VBA工程时,新VBA工程里
的模块文件夹又会命名为“模块1”,“模块2”,等等。模块拥有相同的名称不但对你,而且对VB造
成很大混淆,因为,它要在一个打开许多工程的环境中执行你的宏或工程。
为了避免模块混淆,给FirstSteps (Chap01。xls) 工程和 Personal (Personal。xls) 工程里的“模
块1”重新命名:
1。 在工程浏览器窗口,选择FirstSteps (Chap01。xls)工程,并且选择“模块1”
2。 双击属性窗口里的名称属性,这个动作选中了模块的默认名称“模块1”
3。 输入“WorksheetFormatting”作为模块1的名称,并且回车。注意,工程浏览器窗口现在显示
的模块名称是“WorksheetFormatting”
4。 在工程浏览器窗口选择Personal (Personal。xls)
5。 双击属性窗口里的名称属性
6。 输入“Switches”作为模块1的名称,回车
40
… 页面 57…
图2-2 工程浏览器窗口显示通过属性窗口给工程和模块设置的独特名称
4 从其它工程调用过程
你只要明确过程名称,就可以调用这个在同一个工程里任何模块里的过程。假设过程FormulasOnOff
和宏WhatsInACell在同一个工程里的不同模块(或者同一个模块),在WhatsInACell宏里面调用过
程FormulasOnOff,你所要做的所有工作只是明确过程名称,示例如下:
Sub WhatsInACell()
FormulasOnOff
End Sub
然而,如果两个或者两个以上的模块含有这个相同的过程名称,你除了要明确过程名称外,还必须
包括模块名称。假设工程FirstSteps (Chap01。xls)有三个模块。模块FormulaFormatting包含宏
WhatsInACell,但是,模块Switches和模块Formulas都含有一个叫FormulasOnOff的宏。如何在
WhatsInACell调用FormulasOnOff(模块Switches里面的)?请看下面例子:
Sub WhatsInACell()
Switches。FormulasOnOff
End Sub
要调用其它工程里的过程,你必须建立对该工程的引用。你可以在“引用”对话框进行这些操作。
因为FormulasOnOff在Personal (Personal。xls)工程里,在你能够从WhatsInACell调用它之前,你
需要添加对“Personal”的引用。下面是几种建立引用的方法:
1。 在工程浏览器窗口,点击FirstSteps (Chap01。xls)
2。 选择“工具”-“引用”
3。 在引用对话框,选中“Personal”旁边的勾选框(参见图2-3),然后点击确定(译者:在截图
前,我并没有保存Personal,所以在附图里没有Personal一行,如果你依照书中一步一步走下
来,应该没有问题)
41
… 页面 58…
图2-3 引用对话框列出了所有这个工程可以引用的工程。如果你想要执行其它工程里的过程,你
就必须建立对这个工程的引用
既然对“Personal”工程的引用已经建立了,我们就来从WhatsInACell里调用FormulasOnOff吧。
1。 在工程浏览器窗口,选择FirstSteps (Chap01。xls)并且定位到含有WhatsInACell的模块
2。 在MsgBox 〃所有操作都已完成〃之前增加一空白行,并且输入代码:FormulasOnOff
3。 返回到Excel界面,确保当前工作表是这个例子数据(参见第一章的图1-1)
4。 使用任何你在第一章里学到的方法来运行宏WhatsInACell
如果你给两个不同工程里的不同过程以相同的名称,那么你必