友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
依依小说 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第29部分

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



具有灵活性。这样,你的自定义函数就能够将你提供的任何两个数值加和起来了。每个变量代表一 
个数值,你在运行该函数时要给每个变量提供数值。  
技巧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  

                                          85 

… 页面 102…

技巧4-7 函数的快速测试  
你编写自定义函数后,你可以在立即窗口快速的测试它。打开立即窗口,输入一个问号(?)在函 
数名称前,可以显示该函数的计算结果。记住,要在括号里输入函数的参数值。 例如,输入:  
? SumItUp(54; 367。24)  
然后回车。你的函数使用参数m和n传递的数值进行计算,函数的结果显示在下一行:  
421。24  

6。传递参数  

到目前为止,你已经创建了简单的可以执行具体任务的VBA过程,这些过程在它们运行前没有要求 
你提供额外的数据。然而,在现实生活中,过程(子程序和函数)经常需要参数。参数(自变量) 
是过程工作时需要的一个或多个数值。参数通常输入在括号之间,多个参数用逗号分割开来。使用 
Excel有一阵了,你已经知道Excel内置函数根据你提供的数据可能产生不同的结果。例如,如果单 
元格A4和A5分别含有数字5和10,加和公式=SUM(A4:A5)将会返回15,除非你更改单元格里面的数值。 
正如你可以传递数值给Excel内置函数,你也可以传递数值给自定义VBA过程。现在,我们来看看如 
何从子程序传递数值给函数SumItUp。这个自定义函数目的是计算一个人的姓和名的字母数目。  
1。  在放置函数SumItUp的模块里输入下列子程序NumOfCharacters:  
Sub NumOfCharacters()   
       Dim f As Integer   
       Dim l As Integer   
       f = Len(InputBox(〃Enter first name:〃))   
       l = Len(InputBox(〃Enter last name:〃))   
       MsgBox SumItUp(f;l)   
End Sub   
2。  将光标放在过程NumOfCharacters的任意地方并按下F5。VB将显示信息输入框问你名字,这个 
    信息框由下面的函数产生:  
InputBox(〃Enter first name:〃)  
3。  输入任何名字,回车,VB接受你输入的文本并且将它作为一个参数传递给函数Len。函数Len 
    计算提供的文本的字母数目。VB将函数Len的结果储存于变量f以供以后使用。这之后,VB显示 
    下一个信息框,这次是问你的姓。  
4。  输入任何姓,回车。VB将输入的姓传递给函数Len来获得姓的文本长度,然后数值储存于变量l。 
    接下来发生什么呢?VB遇到了函数MsgBox,这个函数告诉VB显示函数SumItUp的结果。然而, 
    因为这个结果还没有准备好,VB很快就跳到函数SumItUp里,使用变量f和l储存的数值来做计 
    算。在函数内部,VB用变量f的值取代参数m和变量l值取代参数n。一旦取代工作完成,VB将两 
    个数值加和起来,并且将结果返回给函数SumItUp。函数SumItUp内部没有其它的任务了,因此, 
    VB又马上返回子程序并且将函数SumItUp的结果作为一个参数提供给函数MsgBox。现在这个信 
    息出现在屏幕上,显示了字母总数目。  
5。  点击确定退出信息框,你可以多次运行过程NumOfCharacters,每次输入不同的姓名。  
我们来看看另外一个使用变量传递参数的例子:  
1。  在工程MyFunctions (Chap04。xls)里添加一个新模块,并重命名为Sample2  
2。  激活模块Sample2并且输入子程序EnterText:  
Sub EnterText()   
       Dim m As String; n As String; r As String   
       m = InputBox (〃Enter your first name:〃)   
       n = InputBox(〃Enter your last name:〃)   
       r = JoinText(m; n)   
       MsgBox r   
End Sub  
3。  输入下述函数过程:  
Function JoinText(k;o)   
       JoinText = k + 〃 〃 + o   

                                           86 

… 页面 103…

End Function   
4。  运行过程EnterText  
VB执行语句时,它收集用户输入的数据并且将这些数据储存在变量m和n上,然后传递这些数据到函 
数JoinText。VB将这些变量的值取代函数JoinText的参数,并且将结果赋到函数名称(JoinText) 
上。当VB返回过程EnterText时,函数的值储存于变量r。然后,函数MsgBox在信息框里显示变量r 
的内容。结果就是用户的完整姓名(姓和名用空格分开)。要从函数传递数值给子程序,需要将该 
值赋到函数名称,例如,下面的函数NumOfDays将值7传递到子程序DaysInAWeek:  
Function NumOfDays()   
       NumOfDays = 7   
End Function   
Sub DaysInAWeek()   
       MsgBox 〃There are 〃 & NumOfDays & 〃 days in a week。〃   
End Sub  
技巧4-8 函数过程不能做什么  
函数过程不能进行任何动作,例如,它们不能在工作表里做插入,删除或设置数据格式操作,不能 
打开文件,或改变屏幕显示样式  

7。明确参数类型  

在前面的部分,你学习了函数根据它们自变量传递的值进行计算,当你声明函数时,你将参数名称 
列在一对括号里面。参数名称就像变量一样,每个参数名称在函数调用时,引用你提供的数值。当 
子程序调用函数过程时,它以变量形式传递参数。一旦函数做点什么,它就将结果赋给函数名称。 
注意,函数过程的名称当作变量来使用。  
象变量一样,函数也有类型,函数的结果可以是字符串型,整型,长整型,等。要明确你函数的结 
果类型,只有在函数声明行后添加关键字As和你想要的类型即可。例如:  
Function MultiplyIt(num1; num2) As Integer  
如果你不明确数据类型,VB将把你的函数结果设置为默认类型(Variant数据类型)。当你明确你的 
函数结果的数据类型时,就象你明确变量的数据类型那样有一些好处,你的程序将更有效地使用内 
存,因此它运行得也更快些。  
我们来看看这个例子,尽管其参数在主调过程声明的是单精度浮点型,但是函数仍然返回整型数据:  
1。  在工程MyFunctions (Chap04。xls)里添加一个新模块,重命名为Sample3  
2。  激活模块Sample3并且输入子程序HowMuch,如下所示:  
Sub HowMuch()   
     Dim num1 As Single   
     Dim num2 As Single   
     Dim result As Single   
     num1 = 45。33   
     num2 = 19。24   
     result = MultiplyIt(num1; num2)   
     MsgBox result   
End Sub   
3。  在子程序HowMuch下面输入下列函数过程:  
Function MultiplyIt(num1;num2) As Integer   
     MultiplyIt = num1 * num2   
End Function   
因为储存于变量num1和num2的数值不是整数,要确保它们相乘后的结果为整数,你就得将函数结果 
设置为整型。如果你不给函数MultiplyIt的结果设置数据类型,过程HowMuch将会将结果�
返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!