第10章 Function函数 sql function函数

第10章  Function函数

上一章曾提到过通用过程包括Sub过程和Function过程,为了便于区分,本书将Function过程称为函数。上一章介绍了过程的创建和调用方法,并详细介绍了调用过程时参数的传递方法。Function函数过程与Sub过程类似,本章将介绍其用法。

10.1 函数与过程

Function函数和Sub过程都属于VBA的通用过程。对比两种结构,可发现它们的相同点和不同点。

相同点:

●都是构成VBA程序的基本单位;

●都可用Public,Private等关键字设置过程的作用区域;

●都可接受参数,参数的设置相同(如传递方式、可选参数、可变参数等)。

不同点:

●Sub过程不能返回一个值,而Function函数可以返回一个值,因此Function函数可以像Excel内部函数一样在表达式中使用;

●Sub过程可作为Excel中的宏来调用,而Function函数不会出现在”选择宏”对话框中,要在工作表中调用Function函数,可像使用Excel内部函数一样;

●在VBA中,Sub过程可作为独立的基本语句调用,而Function函数通常作为表达式的一部分。

注意:Function函数也可像Sub一样作为独立的语句调用,只是不会接受函数的返回值,也就失去了函数的意义了。

10.2 字义函数

Function函数的创建方法与Sub过程类似。在使用Function函数时,一般需要使用一个变量来接收返回值。

10.2.1创建函数

创建函数有两种方法:通过对话框和手工输入代码。通过对话框创建函数的方法与创建Sub过程相似,在VBE中选择“插入”┃“过程”命令,打开如图10-1所示的“添加过程”对话框,在“类型”中选择“函数”,输入函数名称即可创建函数的结构。



要手工输入代码创建Function函数,首先要了解Function结构。其语法格式如下:



可以看出,Function函数结构与Sub过程的结构很相似,下面介绍其不同点:

●声明函数名的第一行使用“As返回类型”定义函数的返回值类型。

●在函数体内,通过给函数名赋值来返回计算结果。

函数名=表达式1

如果在函数体内没有上面的语句,则该函数返回一个默认值:数值函数返回0;字符串函数返回空字符串。

上一章中创建了一个名为“MySum”的Sub过程,其声明代码如下:

Sub MySum(intTotal As Integer,ParamArray intNum())

因为Sub过程不能返回值,所以使用了一个ByRet方式的变量intTotal用来返回计算的结果。调用以上过程时,需要给过程传递一个获取返回值变量(如下面代码中的i):

MySum i,1,2,3,4,5,6,7,8

这不是一种好方法。学习了Function函数后,可将该过程改写为函数样式:



调用Function函数来进行数据的累加,可使代码更规范。可使用以下方式调用Function函数:

i=可变参数(1,2,3,4,5,6,7,8)

这就像使用内部函数一样。

10.2.2 调用函数

有两种方法调用Function函数:一种是在工作表的公式中使用;另一种是VBA的另外一外过程里调用。

1. 在工作各科调用函数

自定义Function函数和系统内置函数一样,可在Excel工作表的公式中进行引用。如果不知道Function函数的名称或它的参数,可以使用“插入函数”对话框帮助用户向工作表中输入这些函数。例如,要在工作表中引用上一节制作的“MySum”函数的过程如下。

步骤1 返回到Excel窗口,单击选择一个单元格。

步骤2 在“公式”选项卡的“函数库”中,单击“插入函数”按钮,将打开如图10-2所示的“插入函数”对话框。

步骤3 在“或选择类别”下拉列表框中选择“用户定义”选项,下方的函数列表将显示自定义的函数,如图10-2所示。

步骤4 在如图10-2所示对话框中,单击选择一个自定义函数,单击“确定”按钮,打开如图10-3所示的“函数参数”对话框,在该对话框中可输入函数所需要的参数。



步骤5 输入完参数后,单击“确定”按钮,完成公式的输入。Excel在所选单元格里输入“MySum”函数,如图10-4所示。



.  2. 在VBA代码中调用函数

在VBE开发环境中,不能像对待Sub过程一样按“F5”键来运行Function函数。要运行函数,必须从另一个过程里调用该函数。

Function函数的调用比较简单,可以像使用VBA内部函数一样来调用Function函数。它与内部函数没有什么区别,只不过内部函数VBA由系统提供,而Function函数是由用户自己定义的。例如,下面的代码调用上一节定义的MySum函数,并将计算结果保存到t中。



还可将Function函数作为表达式的一部分,使用其返回值参加表达式的运算,例如:

t=t+MySum(1,3,8,10,12)*3

在代码中也可像调用Sub过程一样,直接输入函数的名称,后面跟上参数(参数不能用括号括起来),例如以下代码:

MySum 1,3,8,10,12

这种方式下没有变量接收函数的返回值,得不到运行结果。虽然语法上没错误,但没什么实际意义。

10.3 Function函数实例

上面介绍了Function函数的相关知识,本节提供几个常用Function实例,帮助读者进一步熟悉Runction函数。

10.3.1 大写金额转换函数

在用Excel进行财务统计时,需要将金额由阿拉伯数字转换为中文大写形式,通常是将单元格格式自定义为“[dbnum2]&元”。但是对于带有小数的数值却不能得到正确的结果,如在单元格中输入1234.5,转换的结果却为“壹仟贰佰叁拾肆.伍元”。通过编写Function函数可生成正确的中文大写金额格式。具体代码如下:







以上Function传递进来的数值分割为三部分:元、角、分。将这几个部分单独转换为[dbnum2]格式后,再根据出现的各种可能将这三部分与字符“元”、“角”、“分”进行组合。在进行组合时,应分别考虑元、角、分各自为零时的情况。

在VBA中编写好函数后,应在Excel工作表中进行测试。下面是测试的步骤:

步骤1 切换到Excel界面中。

步骤2 选中一个单元格,在“公式”选项卡的“函数库”组中单击“插入函数”按钮,弹出“插入函数”对话框,如图10-5所示。

步骤3 选中“CapsMoney”函数,单击“确定”按钮,弹出“函数参数”对话框,选择单元格“A1”作为参数,如图10-6所示。



步骤4 在单元格“A1”中输入各种数字,检查经过函数转换后的结果是否正确,如图10-7所示。



10.3.2 生成彩票号码

彩票号码是由多个数组成的,如果通过函数来生成一组彩票号码,应该考虑怎样将其返回到调用程序中。

Function函数可将数组作为一个参数返回,可使用这个特性一次返回多个数据。要使Function函数返回数组,在定义函数时需将函数的返回值设为Variant类型(或不设类型,默认为Variant类型),并在函数体中为函数名赋值一个数组。例如,以下Function函数可生成7位数的彩票号码:

Function lottery()



在程序中,首先定义了一个数组,用来保存每一个数值;接着使用随机函数生成7个数字,再将这个数组赋给函数名即可。

Randomize语句用来初始化随机数生成器。Rnd()函数返回小于1但大于或等于0的一个数,将其乘以10后再取整,得到一位数字的数据。

在工作表中引用返回值为数组的函数时,应选中对应的一片单元格区域,然后输入公式,再按“Ctrl+Shift+Enter”组合键输入数组公式。
第10章 Function函数 sql function函数

提示:有关数组公式的使用,请参阅有关Excel使用的基础类书籍。

下面演示使用上面创建的“lottery”函数的方法。

步骤1 切换到Excel界面。

步骤2 选中一行中的7个单元格区域(如“A1:G1”)。

步骤3 在编辑栏中输入公式“=lottery()”,按“Ctrl+Shift+Enter”组合键完成公式的输入,如图10-8所示。

步骤4 在选中的单元格区域中分别填写上“lottery”函数返回数组中各元素的值。此时“A1:G1”单元格区域为数组公式区域,用户不能删除或修改某一个单元格的内容。选中这7个单元格再按“Delete”键可删除数组公式。

步骤5 选中“A1:G1”单元格,托运右下角的填充柄,可向下填充多个数列,如图10-9所示。



使用数组公式时,如果选中的单元格个数少于函数返回时的数组元素个数,函数将只填充选中的单元格,舍弃多余数组元素的值,如图10-10所示。如果选中的单元格个数多于函数返回时的数组元素个数,多余单元格将显示“#N/A”,如图10-10(b)所示。

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/113617.html

更多阅读

第四章 穿上基督 | 祈祷自由,爱也自由 小德兰爱心书屋 德兰

第四章 穿上基督 浏览次数:1004 更新时间:2008-9-7凡以前对我有利益的事,我如今为了基督,都看作是损失。不但如此,而且我将一切都看作损失,因为我只以认识我主基督耶稣为至宝;为了衪,我自愿损失一切,拿一切当废物,为赚得基督,为结合于他,并非

第三章 力和知性;现象和超感官世界二 知性

第三章 力和知性;现象和超感官世界(二)[3.规律作为现象的真理]  知性——这是我们这里考察的对象——现在正处于这样的地位,对于它那内在世界虽说出现了,但首先只是作为一般的、还没有实现的自在性;力的交替作用也仅有这种消极的意义,

第3章 计算机网络体系结构及协议-4 ssl协议体系结构

第3章 计算机网络体系结构及协议3.4网络层  网络层是OSI参考模型中的第三层,介于运输层和数据链中路层之间。它在数据路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中

声明:《第10章 Function函数 sql function函数》为网友美丽的邂逅分享!如侵犯到您的合法权益请联系我们删除