📜  vba 可选 - VBA (1)

📅  最后修改于: 2023-12-03 15:20:57.656000             🧑  作者: Mango

VBA 可选参数

在 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 ' 报错,中间省略了一个参数