一个函数定义一些语句或函数调用执行的代码块,并在完成时返回一个值(返回值)。使用函数的几个好处:1、减少程序冗余;2、允许在许多程序中重用代码;3、提高程序的可读性;4、提高程序的可维护性;5、使程序的扩展变得容易。
访问权限:其中Public和Private关键字分别指定公共或内部模块级访问权限。如果没有给定,则该函数默认为公共访问(Public)。
调用约定:使用Cdecl,Pascal和StdCall关键字指定调函数在调用期间从堆栈中入栈和出栈参数的顺序。如果没有给定,则该函数默认使用标准约定(StdCall)。
参数传递:函数调用时可能会收到一个或多个变量或参数。这些参数列表中的参数分别由ByRef和ByVal关键字指定参数是通过地址还是按值传递。参数的类型由参数之后的“As type”给出。如果声明中的参数有默认值,则该参数是可选的。数组参数通过使用带有空括号的标识符来指定。请注意,数组参数始终为ByRef,所以在数组参数钱不能指定ByRef和ByVal关键字。当调用具有数组参数的函数时,必须在数组名后加括号。
重载函数:函数的重载是指一个相同名称(identifier )的函数具有不同的参数(或参数类型不同)。Overload关键字指定一个函数可能被重载。必须使用Overload关键字定义或声明函数,然后才能使函数重载。
返回值:返回类型指定退出时函数返回的数据类型。如果没有指定数据类型,则该函数将返回默认数据类型,除非使用DefSng,DefDbl,DefStr等设置为其他数据类型,否则将为Integer。函数可以使用三种方法返回返回值:1、Return关键字后跟一个值将立即退出函数,并将该值返回给调用者;2、通过将Function关键字赋值到所需的返回的返回值;3、用函数的名称(identifier)赋值到所需的返回的返回值。后两种方法不会导致功能退出。由于函数有返回值,函数调用计算为表达式,因此,在赋值或If语句中,可以在预期的任何地方进行函数调用。在表达式中的函数调用中需要将参数列表用括号括起来,即使没有参数,也强烈建议使用括号。函数也可以通过指定ByRef As return_type 返回引用。
局部变量保存:用Static关键字指定函数的本地声明的变量在函数调用之间保存。在输入使用Static定义的函数时,局部变量的值与上次调用函数的值相同。
语法:
例如: