共用方式為


了解具名引數和選擇性引數

當你呼叫 SubFunction 程序時,你可以依位置順序提供 參數 ,或依照程序定義中出現的順序,或是依照名稱提供參數,而不考慮位置。

例如,以下 Sub 程序包含三個參數。

Sub PassArgs(strName As String, intAge As Integer, dteBirth As Date) 
    Debug.Print strName, intAge, dteBirth 
End Sub

你可以透過在正確位置提供參數來稱呼此程序,每個參數以逗號分隔,如下範例所示。

PassArgs "Mary", 29, #2-21-69# 

你也可以透過提供 命名參數,並用逗號分隔每個參數來呼叫這個程序。

PassArgs intAge:=29, dteBirth:=#2/21/69#, strName:="Mary" 

命名參數由一個參數名稱後接冒號和一個等號組成 (:=) ,接著參數值。

命名參數在呼叫具有可選參數的程序時特別有用。 如果你使用命名論元,就不必加上逗號來標示缺少位置論元。 使用命名參數可以更容易追蹤你通過的參數和省略的參數。

在程序定義中,選擇性參數前會加上 Optional關鍵字 。 你也可以在程序定義中指定可選參數的預設值。 例如:

Sub OptionalArgs(strState As String, Optional strCountry As String = "USA") 
    ...
End Sub

當你呼叫一個有可選參數的程序時,你可以選擇是否指定該可選參數。 如果你沒有指定可選參數,則會使用預設值(如果有的話)。 若未指定預設值,該參數將為指定型態的任意變數。

以下程序包含兩個可選參數,分別為變數(Variants varRegionvarCountry )。 IsMissing 函式判斷是否已傳遞可選的 Variant 參數給程序。

Sub OptionalArgs(strState As String, Optional varRegion As Variant, Optional varCountry As Variant = "USA") 
    If IsMissing(varRegion) And IsMissing(varCountry) Then 
        Debug.Print strState 
    ElseIf IsMissing(varCountry) Then 
        Debug.Print strState, varRegion 
    ElseIf IsMissing(varRegion) Then 
        Debug.Print strState, varCountry 
    Else 
        Debug.Print strState, varRegion, varCountry 
    End If 
End Sub

你可以像以下範例所示,使用命名參數來呼叫此程序。

OptionalArgs varCountry:="USA", strState:="MD" 
 
OptionalArgs strState:= "MD", varRegion:=5 

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應