VBA过程 可选参数Optional
回顾
我们先看msgbox
MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult
Msgbox共5个参数,而我们经常只传递第1个参数,其它4个参数可以不用传递。
过程中可以不用传值的参数称为可选参数。
观察它的语法,可选参数用中括号[ ]表示。
接下来我们自己定义的过程中添加可选参数,通过Optional关键字。
1 可选参数语法
Sub 过程名称( 参数1 As 数据类型1 , Optional 参数2 As 数据类型2…)
语句块
End Sub
表示将第2个参数为可选参数。可以同时针对多个参数加Optional。
示例:定义过程同时可以求2个数、3个数的和。
Sub sum61(a As Integer, b As Integer, Optional c As Integer)
Debug.Print "和为:" & (a + b + c)
End Sub
Sub main61()
sum61 1, 2, 3 '输出6
sum61 1, 2 '输出3
End Sub
调用sum61 1, 2, 3时,传递3个参数。
调用sum61 1, 2时,只传递3个参数,第3个参数声明为Optional可选参数,不用传值;第3个参数因为声明为Integer,使用自动初始化的值0。
2 判断是否传递参数
Optional参数后有时不加数据类型,也就是用Variant类型,优点是如果不传递时,可以通过IsMissing函数返回True,如果传递则返回False。
示例:定义过程同时可以求2个数、3个数的和。如果省略第3个参数,则自动设为1000。
Sub sum62(a As Integer, b As Integer, Optional c)
'IsMissing判断variant类型变量是否为空
Debug.Print "IsMissing(c):" & IsMissing(c)
If IsMissing(c) Then c = 1000
Debug.Print "和为:" & (a + b + c)
End Sub
Sub main62()
sum62 1, 2, 3 '输出 6
sum62 1, 2 '输出1003
End Sub
输出结果:
IsMissing(c):False
和为:6
IsMissing(c):True
和为:1003