在前面的章节中,你知道了过程是一组指令,它让你在程序运行的时候完成一些具体的任务。VBA有以下三种过程:
1、子程序过程(子程序)执行一些有用的任务但是不返回任何值。它们以关键字Sub开头和关键字End Sub结束。子程序可以用宏录制器录制或者在VB编辑器窗口里直接编写。你已经学习了多种运行这种过程的方法。
2、函数过程(函数)执行具体任务并返回值。它们以关键字Function开头和关键字EndFunction结束。在本章中,你将创建你的第一个函数过程。函数过程可以从子程序里执行,也可以从工作表里访问,就像Excel的内置函数一样。
3、属性过程用于自定义对象。使用属性过程你可以设置和获取对象属性的值,或者设置对另外一个对象的引用。你将在第十一章中学习如何创建自定义对象和使用属性过程。
在本章中,你将学习如何创建和执行自定义函数,另外,你将发现变量如何用于传递数据给子程序和函数。在本章后面,你将对VBA中两种最有用的函数:MsgBox和InputBox进行比较彻底的了解。
1. 打开一个新Excel工作簿,并保存为Chap04.xls
2. 切换到VB编辑器窗口并且选择VBAProject(Chap04.xls)
3. 在属性窗口,将VBAProject改为MyFunctions
4. 在工程浏览器窗口选择MyFunctions(Chap04.xls),然后选择“插入”-“模块”
5. 在属性窗口将“模块1”改为Sample1
6.在工程浏览器窗口,点击Sample1并选择“插入”-“过程”(译者:需要激活右边的代码窗口)。添加过程对话框如图4-1所示
图4-1 你使用添加过程对话框时,VB自动创建你选择的过程类型
7.在对话框里输入下列设置:
名称:SumItUp
类型:函数
范围:公共的
8. 点击确定退出添加过程对话框。VB输入了一个空函数过程如下:
Public Function SumItUp()
End Function
第一句声明函数过程名称,关键字Public表面这个函数可以在所有模块的所有过程里访问。关键字Public是可选的。注意,关键字Function后面是函数名称(SumItUp)和一对空括号。在括号里你可以列上计算中需要的数据项目。每个函数过程都以End Function语句结束。
技巧:关于函数名称
函数名称应该点明该函数的作用,并且必须和变量的命名规则一致。
技巧:设置VBA过程范围
在前几章你学习了变量的范围决定它可以在哪些模块和过程里使用,和变量一样,VBA过程也有范围。过程的范围决定其它模块里的过程是否可以调用该过程。所以的VBA过程默认为公共的,这意味着它可以被任何模块里的其它过程调用。因为过程默认为公共的,所以如果你愿意你可以忽略关键字Public。但是,如果你将Public关键字换成关键字Private,那么你的过程只能被同一模块里的其它过程调用,而不能被其它模块里的过程调用。
将函数声明修改为这样:
Public Function SumItUp(m,n)
End Function
这个函数的目的是加和两个数值。不要将实际值输给函数。给该函数提供两个自变量以确保该函数具有灵活性。这样,你的自定义函数就能够将你提供的任何两个数值加和起来了。每个变量代表一个数值,你在运行该函数时要给每个变量提供数值。
技巧:使用函数的理由
自定义VBA函数可以用于:
1、分析数据和进行计算
2、修正数据和汇报信息
3、基于提供的或计算的数据采取具体行动
10. 在Public Function和End Function之间输入下述语句:
SumItUp = m + n
这条语句意思是将储存于变量n上的数据加在储存于变量m的数值上,并且将结果返回给函数SumItUp。在等号后面输入该函数名称,再就是括号和需要加和的数值。在上面的语句中,设置函数名称等于m + n的和。完成的自定义函数过程如下:
Public Function SumItUp(m,n)
SumItUp = m + n
End Function
祝贺,你已经创建了你的第一个函数!然而,函数过程并没有什么用,除非你知道如何执行它。下一个段落将给你示范如何使你的函数工作。
1. 切换到Excel窗口,并选择任何一个单元格
2.点击函数工具栏上的“插入函数(fx)”按钮(译者:或者选择“插入”-“函数”),Excel弹出插入函数对话框,上面显示了所选类别里所以函数,按字母顺序排列
3. 在类别下拉框里选择“全部”或者“用户定义”,然后滚动函数名称框,找到并选择本章中创建的函数SumItUp。当你选中这个函数名称时,在插入函数对话框的下部显示了该函数的语法:
SumItUp(m,n)
技巧:私有函数用户是看不到的
使用关键字Private声明的函数不会出现在“插入函数”对话框上,私有函数不能用于公式里,它们只能从另一个VBA过程里调用。
技巧:快速访问自定义函数
一旦你创建了一个公共的VBA函数,Excel就会将它加入到“插入函数”对话框的“用户定义”的类别里。通过选择这个类别,你可以快速地访问该自定义函数。
当你的程序运行,变量的内容是可以变化的,如果你想要一次又一次地引用不变的值,那么你应该使用常量。常量就像一个指定的变量一...
ASP.NET Web Forms - 数据绑定 本节介绍了ASP.NET 中如何实现数据绑定。我们可以使用数据绑定(Data Binding)来完成带可选项的...
ASP.NET Image 控件 Web 服务器控件定义和用法 Image 控件用于显示图像。属性 属性 描述 .NET AlternateText 图像的替代文本。 1...
WebSecurity - RequireUser()WebSecurity 对象定义 如果指定的用户未登录,RequireUser() 方法设置 HTTP 状态为 401(未经授权)...
ASP.NET Web Forms - XML 文件 在ASP.NET 中可以通过将 XML 文件当成数据源来将它绑定到 List 控件上。请参考本节内容。我们可以...
ASP.NET Web Forms - Web 服务器控件 本节介绍了ASP.NET 的 Web服务器控件。Web 服务器控件是服务器可理解的特殊 ASP.NET 标签。...
服务器控件控件是在图形用户界面中的小功能块,其中包括文本框,按钮,复选框,列表框,标签,和许多其它工具。利用这些工具,用...
Lua if 语句 Lua 流程控制Lua if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成。Lua if 语句语法格式如下:if(布尔...
lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理。如:点号调用:-- 点号定...