VBA 函数
其它语言中,方法根据返回值分:有返回值、无返回值(void)。
VBA中,将无返回值的称之为过程Sub、有返回值的称为函数Function。
为什么需要返回值?
以求和为例。
Sub sum1(a As Integer, b As Integer)
Dim c As Integer
c = a + b
Debug.Print "sum:" & c
End Sub
Sub sum1_call()
'调用过程
sum1 20, 23 '输出43
Call sum1(20, 6) '输出26
End Sub
上面的代码中,sum1_call调用了sum1,sum1把和打印出来。
假设现在有需求,要在sum1_call获取和,拿到和自己做进一步处理,sum1你也不用管我sum1_call要做什么处理,反正我要拿到和。
就像张三喊李四打印文件,李四要把文件交回给张三,就相当于返回值,张三可能要对文件做进一步的批示。总之:李四不要管张三拿去做什么。
函数的使用步骤
函数的使用步骤与过程完全相同:1)定义函数;2)调用函数。
函数与过程的不同:
1)定义不同。函数声明返回值类型,在函数体中需返回相应的值;
2)调用的地方可以通过变量来接收返回值。
函数定义语法
Function 函数名(参数列表) As 返回类型
语句块
函数名 = 返回值
End Function
函数的定义以Function开头,以End Function结尾。
函数列表后需 As 返回类型来声明返回的数据类型。
返回值通过 函数名 = 返回值 进行返回,类似其它语言中的return。
示例:声明求和函数,返回求和结果。
Function sum8(a As Integer, b As Integer) As Integer
Debug.Print "调用sum8"
sum8 = a + b
End Function
As Integer 返回类型为Integer。
sum8 = a+b 设置返回值,此处的sum8与函数名称一致。
返回值的类型与声明类型需要一致,这里都是Integer。
函数的调用
函数名(实参1,实参2…)
函数名之后使用一对小括号( )把所有参数括起来。
经常会用变量来接收函数的返回值,或者作为表达式的操作数或者函数参数。
变量名 = 函数名(实参1,实参2…)
示例,调用上述sum8。
Sub sum8_call()
Dim c As Integer
'调用函数,获取返回值
c = sum8(20, 23)
Debug.Print "c:" & c
End Sub
sum8_call获取到了sum8计算并返回的数据,可以进一步根据需求进行处理。