声明构成 Function 过程主体的名称、参数和代码。
语法
Function name [(arglist)] [statements] [name=expression] [Exit Function] [statements] [name=expression] End Function
参数:
Name:Function 的名称;遵循标准变量命名约定。
Arglist:表示调用 Function 过程时传递给 Function 过程的参数的变量列表。多个变量之间用逗号分隔。
arglist 参数的语法和组成部分如下:
[ByVal | ByRef] varname[( )]
Arglist 参数:
ByVal:指示参数通过值传递。
ByRef:指示参数通过引用传递。
Varname:表示参数的变量名称;遵循标准变量命名约定。
Statements:要在 Function 过程主体中执行的任何一组语句。
Expression:Function 的返回值。
注释
如果未使用 Public 或 Private 显式指定,则默认情况下 Function 过程为 public,也就是说,它们对脚本中的所有其他过程都可见。Function 中局部变量的值在每次调用该过程后不会保留。
不能在任何其他过程(例如 Sub 或 Property Get)中定义 Function 过程。
Exit Function 语句会导致立即从 Function 过程退出。程序将继续执行调用 Function 过程的语句后面的语句。在 Function 过程中,可以在任意位置出现任意数量的 Exit Function 语句。
与 Sub 过程一样,Function 过程是一个独立的过程,它可以接受参数、执行一系列语句并更改其参数的值。但是,与 Sub 过程不同的是,当您希望使用函数返回的值时,可以在表达式右侧使用 Function 过程,就像使用任何内部函数(例如函数 Sqr、Mid 或 Chr)一样。
您可以在表达式中使用函数名(后跟括号中的参数列表)来调用 Function 过程。有关如何调用 Function 过程的具体信息,请参阅 Call 语句。
要从函数中返回值,可将该值赋给函数名。任意数量的此类赋值都可以出现在过程中的任何位置。如果没有向函数名赋值,则该过程不返回任何值。
以下示例说明如何将返回值赋给名为 FindValue 的函数。在本例中,将 False 赋给了函数名,以指示未找到某个值。
示例 1:
Function FindValue(val)
Dim notFound
notFound = True
'Business Logic
'val not found. Return a val of False.
If notFound Then
FindValue = False
Exit Function
End If
' Business Logic
End Function
'Usage:-
val = FindValue(8)
Function 过程中使用的变量分为两类:在过程中显式声明的变量和未显式声明的变量。在过程中显式声明的变量始终是过程的局部变量。在过程中使用但未显式声明的变量也是局部变量,除非它们在过程之外的最高级别显式声明。