按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
当对象变量不再需要时,你可以给它赋值Nothing,这将释放内存和系统资源:
Set mySheet = Nothing
你将在第九章里看到更多的使用对象变量的例子。
17 查找变量定义
当你在VBA过程里看到一行给变量赋值的指令时,你可以通过选择该变量名称并且按下Shift+F2,
快速地定位到该变量的定义(声明)。或者,你也可以选择“视图”-“定义”,VB将跳到变量的声
明行。要回到刚才的位置,只要按下Ctrl+Shift+F2或选择“视图”-“最后位置”。我们来试试:
1。 定位到过程CostOfPurchase的代码里
2。 定位到语句purchCost = CSng(newPurchase)
3。 在变量名称上单击右键,并在快捷菜单上选择“定义”
4。 通过按Ctrl+Shift+F2返回刚才位置
5。 试试在其它过程的其它变量上查找定义,每次使用不同的方法跳到声明位置。
技巧3-15 这个变量是什么类型?
你可以使用一个VB内置函数来查明变量的类型。参见第四章中使用函数VarType的例子。
18 在 VB 过程里面使用常量
当你的程序运行,变量的内容是可以变化的,如果你想要一次又一次地引用不变的值,那么你应该
使用常量。常量就像一个指定的变量一样,总是引用这个相同的值。VB要求你在使用前要声明常量。
正如下述例子,使用Const语句来声明常量:
Const dialogName = 〃Enter Data〃 As String
Const slsTax = 8。5
Const ColorIdx = 3
常量,象变量一样拥有范围。要让常量仅在一个过程里可用,将它声明为过程级别即可,例如:
Sub WedAnniv( )
Const Age As Integer = 25
End Sub
如果你想要某个常量在一个模块的所有过程中都可用,则在Const语句前加上关键字Private就可
(译者:写在所有过程之上),例如:
Private Const dsk = 〃B:〃 As String
私有常量必须在模块的上面,第一个Sub语句之上声明。
如果你要创建一个该工作簿所有模块都可用的常量时,在Const语句之前加上Public关键字就可以
了,例如:
80
… 页面 97…
Public Const NumOfChar = 255 As Integer
公共常量必须在模块的上面,第一个Sub语句之上声明。
声明常量的时候,你可以使用下列数据类型之一:Boolean,Byte,Integer,Long,Currency,Single,
Double,Date,String或者Variant。
象变量一样,多个常量也可以在一行里声明,例如:
Const Age As Integer = 25; City As String = 〃Denver〃; PayCheck As Currency = 350
使用常量可以使你的VBA过程可读性强,容易维护。例如,你在程序里多次引用某个特定值,就可
以使用常量,而不是这个值本身。这样,如果以后这个值变了(例如销售税率上升了),你只要简
单地在Const语句里改变这个常量的声明就可以了,而不必追踪该值所有发生的地方。
19 内置常量
Excel和VBA都有一长列的预先定义的常量,并且不需要声明,这些内置常量可以通过对象浏览器查
找,我们已经在第二章里详细讨论了对象浏览器。我们来打开对象浏览器并查找Excel常量清单:
1。 在VB编辑器窗口,选择“视图”-“对象浏览器”
2。 在“工程/库”下拉列表里选择Excel
3。 在搜索文本框里输入“Constants”并回车,VB显示搜索结果在“搜索结果”区域
4。 在“类”列表框拉下滚动条,选择“Constants”(参见图3-3)。对象浏览器右边区域显示所
有Excel对象库里可用的内置常量。注意,所有常量的名称以前缀“xl”开头。
图3-3 使用对象浏览器查找内置常量
5。 要查找VBA常量,在工程/库文本框里输入VBA。注意,所有VBA的内置常量以前缀“vb”开头。
学习内置常量的最好方法是使用宏录制器,我们来花上几分钟来录制最小化当前窗口的过程:
1。 在Excel窗口,选择“工具”-“宏”—“录制新宏”
2。 输入MiniWindow作为宏名,选择“当前工作簿”作为保存宏的地方,然后确定
3。 点击最小化按钮,确保你最小化了本文件的窗口,而不是Excel应用程序窗口
4。 点击“停止录制”按钮
5。 最大化该被最小化了的窗口
6。 切换到VB编辑器窗口,并且双击模块文件夹。代码显示如下:
Sub MiniWindow( )
ActiveWindow。WindowState = xlMinimized
End Sub
你有时可能会看到VBA过程使用数值,而不是内置常量名称,例如,常量xlMaximized的实际数值是
-4137,常量xlMinimized的值是-4140,以及常量xlNormal的值为-4143(参见图3-4)
81
… 页面 98…
图3-4 你可以在对象浏览器里面选择常量名称然后在下面的窗口里看到它的实际值
20 接下来……
本章介绍了几个VBA概念,包括数据类型,变量和常量。你学习了如何声明各种变量,也看到变量
和常量之间的区别。既然你知道什么是变量,也知道如何使用它们,你就可以创建使用比前两章更
有意义的方法操作数据的过程了。在下一章中,你将通过使用带有自变量和函数的过程来扩展你的
VBA知识,另外,你还将学习函数,让你的VBA过程与用户进行交流。
第四章 VBA 过程:子程序和函数
作者:Julitta Korol 翻译:Tiger Chen Jan 16’ 2005
在第二章中,你知道了过程是一组指令,它让你在程序运行的时候完成一些具体的任务。VBA有以
下三种过程:
字End Sub结束。子程序可以用宏录制器(第一章)录制或者在VB编辑器窗口里直接编写(见
第二章和第三章)。在你第一章里已经学习了多种运行这种过程的方法。
结束。在本章中,你将创建你的第一个函数过程。函数过程可以从子程序里执行,也可以从工
作表里访问,就像Excel的内置函数一样。
个对象的引用。你将在第十一章中学习如何创建自定义对象和使用属性过程。
在本章中,你将学习如何创建和执行自定义函数,另外,你将发现变量(见第三章)如何用于传递
数据给子程序和函数。在本章后面,你将对VBA中两种最有用的函数:MsgBox和InputBox进行比较
彻底的了解。
1。关于函数过程
使用Excel几百种内置函数,你可以进行非常宽广的自动计算,然而,你总有要做个自定义计算的
时候。使用VBA编程,你可以通过创建函数过程快速的完成这个特殊需求,你可以创建任何Excel
没有提供的函数。
2。创建函数过程
象Excel函数一样,函数过程进行计算并返回数值。学习函数的最好方法就是自己创建一个。因此,
我们开始吧。设置完一个新的VBA工程后,你将创建一个函数过程来加和两个数值。
1。 打开一个新Excel工作簿,并保存为Chap04。xls
2。 切换到VB编辑器窗口并且选择VBAProject(Chap04。xls)
3。 在属性窗口,将VBAProject改为MyFunctions
4。 在工程浏览器窗口选择MyFunctions(Chap04。xls),然后选择“插入”-“模块”
5。 在属性窗口将“模块1”改为Sample1
82
… 页面 99…
6。 在工程浏览器窗口,点击Sample1并选择“插入”-“过程”(译者:需要激活右边的代码窗口)。
添加过程对话框如图4-1所示
图4-1 你使用添加过程对话框时,VB自动创建你选择的过程类型
7。 在对话框里输入下列设置:
名称:SumItUp
类型:函数
范围:公共的
8。 点击确定退出添加过程对话框。VB输入了一个空函数过程如下:
Public Function SumItUp()
End Function
第一句声明函数过程名称,关键字Public表面这个函数可以在所有模块的所有过程里访问。关键字
Public是可选的。注意,关键字Function后面是函数名称(SumItUp)和一对空括号。在括号里你
可以列上计算中需要的数据项目。每个函数过程都以End Function语句结束。
技巧4-1 关于函数名称
函数名称应该点明该函数的作用,并且必须和变量的命名规则一致。
技巧4-2 设置VBA过程范围
在前几章你学习了变量的范围决定它可以在哪些模块和过程里使用,和变量一样,VBA过程也有范
围。过程的范围决定其它模块里的过程是否可以调用该过程。所以的VBA过程默认为公共的,这意
味着它可以被任何模块里的其它过程调用。因为过程默认为公共的,所以如果你愿意你可以忽略关
键字Public。但是,如果你将Public关键字换成关键字Private,那么你的过程只能被同一模块里
的其它过程调用,而不能被其它模块里的过程调用。
9。 将函数声明修改为这样:
Public Function SumItUp(m;n)
End Function
这个函数的目的是加和两个数值。不要将实际值输给函数。给该函数提供两个自变量以确保该函数
具有灵活性。这样,你的自定