首页 百科知识 新建函数及函数的使用

新建函数及函数的使用

时间:2023-10-03 百科知识 版权反馈
【摘要】:函数名末尾可使用As子句来声明返回值的数据类型, 参数也可指定数据类型。当被调过程的形参值发生变化时, 实参值也产生同样的变化。实参和形参是两个不同的变量, 占用不同的内存单元。实参将其值赋给形参, 以后形参的变化不会影响到实参的值。若按值传递, 必须在形参前冠以关键字By Val。例5: 子过程call_password将a、 b两个实参数100、200传递到by_call子过程中的形参数x、 y的过程代码及立即窗口结果如图9.7所示。

一、 建立函数过程的格式

Function过程, 又称为函数过程。 它执行一系列操作, 有返回值。 定义格式为:

[Public|Private]Function函数名([<参数>])[As数据类型]

[<语句组>]

[函数名=<表达式>]

[Exit Function]

[<语句组>]

[函数名=<表达式>]

End Function

【说明】

•函数名: 命名规则与变量名规则相同。 但不能与系统的内部函数或其他通用子过程同名, 也不能与已定义的全局变量和本模块中模块级变量同名。

•定义函数时用Public关键字, 则所有模块都可以调用它。 用Private关键字, 函数只用于同一模块。 如果没有显式指定, 缺省为公用。

•函数名末尾可使用As子句来声明返回值的数据类型, 参数也可指定数据类型。 若省略则函数返回变体类型值 (Variant)。

•Exit Function: 表示退出函数过程, 常常与选择结构 (If或Select Case语句) 联用,即当满足一定条件时, 退出函数过程。

•在函数体内, 函数名可以当变量使用, 函数的返回值就是通过对函数名的赋值语句来实现的, 在函数过程中至少要对函数名赋值一次。

•函数过程不能使用Call来调用执行, 需要直接引用函数过程名, 并由接在函数过程名后的括号所辨别。

•形参数列表: 形参的定义与子过程完全相同。

例4: 使用过程调用函数, 输入华氏温度计算摄氏温度。 过程代码和结果如图9.6所示。

图9.6 函数调用过程代码及结果

【说明】

函数的返回值要赋值给函数名 (temperature=tt) 才有结果。 可以使用信息输出函数Msgbox(), 也可以利用立即窗口输出 (关于立即窗口使用参见9.7节的内容)。

二、 函数参数传递

函数过程调用中的参数传递方式有两种: 按地址传递和按值传递。

(1) 按地址传递。

形参与实参在内存中占用相同的存储单元。 当被调过程的形参值发生变化时, 实参值也产生同样的变化。 默认的参数传递方式是按地址。 如果要显式指定按地址传递方式, 可在每个形参前增加关键字By Ref。

(2) 按值传递。

实参和形参是两个不同的变量, 占用不同的内存单元。 实参将其值赋给形参, 以后形参的变化不会影响到实参的值。 若按值传递, 必须在形参前冠以关键字By Val。

例5: 子过程call_password将a、 b两个实参数100、200传递到by_call子过程中的形参数x、 y的过程代码及立即窗口结果如图9.7所示。

【说明】

•运行前按 “Ctrl”+“G” 组合键打开立即窗口。

•结果是100、300, y按地址传递改变了原值, 而x按值传递, 未改变原值。

图9.7 参数传递代码及结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈