Общие сведения об именованных и необязательных аргументах
При вызове процедуры Sub или Functionаргументы можно указать позиционально, в том порядке, в который они отображаются в определении процедуры, или указать аргументы по имени без учета позиции.
Например, следующая процедура 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"
Именованный аргумент состоит из имени, сопровождаемого двоеточием и знаком равенства (:=), после которых указывается значение аргумента.
Именованные аргументы особенно удобны, когда вызывается процедура, имеющая необязательные аргументы. Если используются именованные аргументы, нет необходимости включать запятые для обозначения отсутствующих аргументов. Использование именованных аргументов облегчает отслеживание того, какие аргументы переданы и какие пропущены.
Необязательные аргументы предшествуют необязательнымключевое слово в определении процедуры. Для необязательного аргумента в определении процедуры можно также указать значение по умолчанию. Например:
Sub OptionalArgs(strState As String, Optional strCountry As String = "USA")
...
End Sub
При вызове процедуры с необязательным аргументом можно выбрать, указывать или нет необязательный аргумент. Если необязательный аргумент не указывается, используется значение по умолчанию, если таковое имеется. Если значение по умолчанию не указано, аргумент будет иметь значение для любой переменной указанного типа.
Следующая процедура включает два необязательных аргумента varRegion
: переменные и varCountry
. Функция 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 и обратная связь.