📅  最后修改于: 2023-12-03 15:20:57.656000             🧑  作者: Mango
在 VBA 中,函数和子例程可以带有可选参数。可选参数是指在调用函数或子例程时可以省略的参数,使得调用者可以选择是否需要传入该参数。
定义带有可选参数的函数或子例程,需要在参数名后面添加一个问号(?)并给定一个默认值。例如:
Function CalculateDiscount(price As Double, Optional discount As Double = 0.1) As Double
CalculateDiscount = price * (1 - discount)
End Function
在以上示例中,discount 参数带有默认值 0.1,如果在调用 CalculateDiscount 函数时没有传入 discount 参数,那么默认为 0.1。
调用带有可选参数的函数或子例程时,可以选择传入可选参数或不传入。例如:
Sub TestCalculateDiscount()
Debug.Print CalculateDiscount(100) ' 输出 90
Debug.Print CalculateDiscount(100, 0.2) ' 输出 80
End Sub
在以上示例中,第一次调用 CalculateDiscount 函数时,没有传入 discount 参数,因此默认为 0.1,结果为 100 * (1 - 0.1) = 90。第二次调用时,手动传入了 discount 参数为 0.2,结果为 100 * (1 - 0.2) = 80。
Function Test(a As Integer, Optional b As Integer = 0, Optional c As Integer = 0) As Integer
但以下是非法的函数定义:
Function Test(Optional b As Integer = 0, a As Integer) As Integer
Test 1, 2
Test 1, 2, 3
但以下是非法的函数调用:
Test 1, , 3 ' 报错,中间省略了一个参数