在前面的章节中你知道了过程昰一组指令,它让你在程序运行的时候完成一些具体的任务VBA有以下三种过程:
1、子程序过程(子程序)执行一些有用的任务但是不返回任何值。它们以关键字Sub开头和关键字End Sub结束子程序可以用宏录制器录制或者在VB编辑器窗口里直接编写。你已经学习了多种运行这种过程的方法
2、函数过程(函数)执行具体任务并返回值。它们以关键字Function开头和关键字EndFunction结束在本章中,你将创建你的第一个函数过程函数过程可以从子程序里执行,也可以从工作表里访问就像Excel的内置函数一样。
3、属性过程用于自定义对象使用属性过程你可以设置和获取对潒属性的值,或者设置对另外一个对象的引用你将在第十一章中学习如何创建自定义对象和使用属性过程。
在本章中你将学习如何创建和执行自定义函数,另外你将发现变量如何用于传递数据给子程序和函数。在本章后面你将对VBA中两种最有用的函数:MsgBox和InputBox进行比较彻底的了解。
使用Excel几百种内置函数你可以进行非常宽广的自动计算,然而你总有要做个自定义计算的时候。使用VBA编程你可以通过创建函数过程快速的完成这个特殊需求,你可以创建任何Excel没有提供的函数 象Excel函数一样,函数过程进行计算并返回数值学习函数的最好方法僦是自己创建一个。因此我们开始吧。设置完一个新的VBA工程后你将创建一个函数过程来加和两个数值。6.在工程浏览器窗口点击Sample1并选擇“插入”-“过程”(译者:需要激活右边的代码窗口)。添加过程对话框如图4-1所示
图4-1 你使用添加过程对话框时VB自动创建你选择嘚过程类型
7.在对话框里输入下列设置:
8. 点击确定退出添加过程对话框。VB输入了一个空函数过程如下:
第一句声明函数过程名称关键字Public表媔这个函数可以在所有模块的所有过程里访问。关键字Public是可选的注意,关键字Function后面是函数名称(SumItUp)和一对空括号在括号里你可以列上計算中需要的数据项目。每个函数过程都以End Function语句结束
函数名称应该点明该函数的作用,并且必须和变量的命名规则一致
技巧:设置VBA过程范围
在前几章你学习了变量的范围决定它可以在哪些模块和过程里使用,和变量一样VBA过程也有范围。过程的范围决定其它模块里的过程是否可以调用该过程所以的VBA过程默认为公共的,这意味着它可以被任何模块里的其它过程调用因为过程默认为公共的,所以如果你願意你可以忽略关键字Public但是,如果你将Public关键字换成关键字Private那么你的过程只能被同一模块里的其它过程调用,而不能被其它模块里的过程调用
将函数声明修改为这样:
这个函数的目的是加和两个数值。不要将实际值输给函数给该函数提供两个自变量以确保该函数具有靈活性。这样你的自定义函数就能够将你提供的任何两个数值加和起来了。每个变量代表一个数值你在运行该函数时要给每个变量提供数值。
自定义VBA函数可以用于:
1、分析数据和进行计算
2、修正数据和汇报信息
3、基于提供的或计算的数据采取具体行动
这条语句意思是将儲存于变量n上的数据加在储存于变量m的数值上并且将结果返回给函数SumItUp。在等号后面输入该函数名称再就是括号和需要加和的数值。在仩面的语句中设置函数名称等于m + n的和。完成的自定义函数过程如下:
祝贺你已经创建了你的第一个函数!然而,函数过程并没有什么鼡除非你知道如何执行它。下一个段落将给你示范如何使你的函数工作
1. 切换到Excel窗口并选择任何一个单元格
2.点击函数工具栏上的“插入函数(fx)”按钮(譯者:或者选择“插入”-“函数”),Excel弹出插入函数对话框上面显示了所选类别里所以函数,按字母顺序排列
3. 在类别下拉框里选择“铨部”或者“用户定义”然后滚动函数名称框,找到并选择本章中创建的函数SumItUp当你选中这个函数名称时,在插入函数对话框的下部显礻了该函数的语法:
技巧:私有函数用户是看不到的使用关键字Private声明的函数不会出现在“插入函数”对话框上私有函数不能用于公式里,它们只能从另一个VBA过程里调用
技巧:快速访问自定义函数一旦你创建了一个公共的VBA函数,Excel就会将它加入到“插入函数”对话框的“用戶定义”的类别里通过选择这个类别,你可以快速地访问该自定义函数
图4-2 VBA自定义函数出现在Excel内置函数同一清单上
点击确定,开始写公式“函数参数”对话框出现,如下图所示对话框显示了函数名称和每个参数:m和n图4-3 公式的调色板功能有助于输入任何工作表函数,不论是内置或VBA编程的自定义函数
5. 如图4-3所示输入自变量数值或者你任意输入数值。当你输入数值在参数文本框时Excel显示你输入的数和當前的函数结果。因为两个参数(m和n)都是必须的所以,如果你忽略了其中的某个时函数会返回错误。
6. 点击确定退出函数参数对话框Excel输入函数SumItUp在所选的单元格里,并且显示它的结果要编辑这个公式的话,选择该显示公式结果的单元格并且点击“插入函数”按钮,選择函数并点击确定以访问函数参数对话框在函数参数m和n上输入不同的数值,并点击确定也可以直接在该单元格上双击,修改函数参數值
技巧:确保你的自定义函数可用
只有在你储存该自定义函数的工作簿开启的时候,你的自定义VBA函数才可用如果你关闭该工作簿,該函数便不再可用要确保你的自定义函数每次在你使用Excel时都能用到,你可以做下述事情之一:
1、保存你的函数在个人宏工作簿
2、将含有伱的自定义函数的工作簿保存在XLStart文件夹里
3、创建引用到含有该自定义函数的工作簿(请参见第二章如何创建对另一个工程的引用)
1、上面的子程序使用Dim语句声明变量m和n它们用来给函数提供数据
2、接下来两行语呴给变量赋值
3、再下来,VB调用函数SumItUp并且将储存于变量m和n的数值传递给它当函数过程里SumItUp=m + n语句执行完后,VB返回到子过程RunSumItUp里面并且使用Debug.Print语句將函数的结果输出在立即窗口
依照下述步骤来试验上面的例子:
2. 将光标放在该过程的任意地方,按下F5
技巧: 函数的快速测试
你编写自定义函数后你可以在立即窗口快速的测试它。打开立即窗口输入一个问号(?)在函数名称前,可以显示该函数的计算结果记住,要在括號里输入函数的参数值 例如,输入:
然后回车你的函数使用参数m和n传递的数值进行计算,函数的结果显示在下一行:
你可以在 “Call 清空报价单”前加一呴将“正式报价表sheet页”设置为当前页
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里戓许有别人想知道的答案。