excel_vba_编程教程(完整版)-第32章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
学习内置常量的最好方法是使用宏录制器,我们来花上几分钟来录制最小化当前窗口的过程:
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
这个函数的目的是加和两个数值。不要将实际值输给函数。给该函数提供两个自变量以确保该函数
具有灵活性。这样,你的自定义函数就能够将你提供的任何两个数值加和起来了。每个变量代表一
个数值,你在运行该函数时要给每个变量提供数值。
技巧4-3 使用函数的理由
自定义VBA函数可以用于:
10。 在Public Function和End Function之间输入下述语句:
SumItUp = m + n
这条语句意思是将储存于变量n上的数据加在储存于变量m的数值上,并且将结果返回给函数
83
… 页面 100…
SumItUp。在等号后面输入该函数名称,再就是括号和需要加和的数值。在上面的语句中,设置函
数名称等于m + n的和。完成的自定义函数过程如下:
Public Function SumItUp(m;n)
SumItUp = m + n
End Function
祝贺,你已经创建了你的第一个函数!然而,函数过程并没有什么用,除非你知道如何执行它。下
一个段落将给你示范如何使你的函数工作。
3。执行函数过程
在第一章里,你学习了很多中方法来运行子程序。和子程序不同,函数过程只能使用两种方法来执
行。你可以用于工作表的公式里面,或者从另外一个过程里调用它。你在VBA里创建的函数过程,
不能通过在Excel窗口选择“工具”-“宏”-“运行宏”访问;它们也不能在代码里面通过按F5
键来运行。接下来的部分里,你将学习到执行函数的专门技术。
4。从工作表里运行函数过程
自定义函数过程和内置函数一样,如果你不知道确切的函数名称或者它的自变量,那么你可以使用
“插入函数”对话框来帮助你在工作表里输入需要的函数。
1。 切换到Excel窗口,并选择任何一个单元格
2。 点击函数工具栏上的“插入函数(fx)”按钮(译者:或者选择“插入”-“函数”),Excel
弹出插入函数对话框,上面显示了所选类别里所以函数,按字母顺序排列
3。 在类别下拉框里选择“全部”或者“用户定义”,然后滚动函数名称框,找到并选择本章中创
建的函数SumItUp。当你选中这个函数名称时,在插入函数对话框的下部显示了该函数的语法:
SumItUp(m;n)(译者:同时可以看到“没有帮助信息”。请参阅创建自定义函数的相关教材,
如何给自定义函数提供帮助信息)
技巧4-4 私有函数用户是看不到的
使用关键字Private声明的函数不会出现在“插入函数”对话框上,私有函数不能用于公式里,它
们只能从另一个VBA过程里调用。
技巧4-5 快速访问自定义函数
一旦你创建了一个公共的VBA函数,Excel就会将它加入到“插入函数”对话框的“用户定义”的类
别里。通过选择这个类别,你可以快速地访问该自定义函数。
图4-2 VBA自定义函数出现在Excel内置函数同一清单上
4。 点击确定,开始写公式。“函数参数”对话框出现,如下图所示。对话框显示了函数名称和每
个参数:m和n
84
… 页面 101…
图4-3 公式的调色板功能有助于输入任何工作表函数,不论是内置或VBA编程的自定义函数
5。 如图4-3所示输入自变量数值,或者你任意输入数值。当你输入数值在参数文本框时,Excel
显示你输入的数和当前的函数结果。因为两个参数(m和n)都是必须的,所以,如果你忽略了
其中的某个时,函数会返回错误。
6。 点击确定退出函数参数对话框,Excel输入函数SumItUp在所选的单元格里,并且显示它的结果。
要编辑这个公式的话,选择该显示公式结果的单元格,并且点击“插入函数”按钮,选择函数
并点击确定以访问函数参数对话框。在函数参数m和n上输入不同的数值,并点击确定。也可以
直接在该单元格上双击,修改函数参数值。
技巧4-6 确保你的自定义函数可用
只有在你储存该自定义函数的工作簿开启的时候,你的自定义VBA函数才可用,如果你关闭该工作
簿,该函数便不再可用。要确保你的自定义函数每次在你使用Excel时都能用到,你可以做下述事
情之一:
5。从另外一个 VBA 过程里运行函数过程
正如前面提到的,你不能在VB窗口将光标放在代码里并且按F5来运行函数,也不能通过选择“运行”
-“运行宏”来运行函数过程。要运行函数,你必须从另外一个过程里调用该函数。要执行自定义
函数,编写一个VBA子程序并且在需要的时候调用该函数。下面的过程调用函数SumItUp并且将计算
结果输出在立即窗口:
Sub RunSumItUp()
Dim m As Single; n As Single
m = 370000
n = 3459。77
Debug。Print SumItUp(m;n)
MsgBox 〃Open the Immediate window to see the result。〃
End Sub
m + n语句执行完后,VB返回到子过程RunSumItUp里面,并且使用Debug。Print语句将函数的结
果输出在立即窗口
依照下述步骤来试验上面的例子:
1。 在输入函数SumItUp的同一个模块里面输入过程RunSumItUp
2。 将光标放在该过程的任意地方,按下F5