Общие сведения об именованных и необязательных аргументахUnderstanding named arguments and optional arguments

При вызове процедуры Sub или Function можно указать аргументы позиционно в том порядке, в котором они отображаются в определении процедуры, или можно указать аргументы по имени без учета их положения.When you call a Sub or Function procedure, you can supply arguments positionally, in the order that they appear in the procedure's definition, or you can supply the arguments by name without regard to position.

Например, следующая процедура Sub использует три аргумента.For example, the following Sub procedure takes three arguments.

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

Эту процедуру можно вызвать, указав ее аргументы в правильной позиции, каждый из которых отделяется запятой, как показано в следующем примере.You can call this procedure by supplying its arguments in the correct position, each delimited by a comma, as shown in the following example.

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


Можно также вызвать эту процедуру, передав именованные аргументы, отделяя каждый из них запятой.You can also call this procedure by supplying named arguments, delimiting each with a comma.

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


Именованный аргумент состоит из имени, сопровождаемого двоеточием и знаком равенства (:=), после которых указывается значение аргумента.A named argument consists of an argument name followed by a colon and an equal sign (:=), followed by the argument value.

Именованные аргументы особенно удобны, когда вызывается процедура, имеющая необязательные аргументы.Named arguments are especially useful when you are calling a procedure that has optional arguments. Если используются именованные аргументы, нет необходимости включать запятые для обозначения отсутствующих аргументов.If you use named arguments, you don't have to include commas to denote missing positional arguments. Использование именованных аргументов облегчает отслеживание того, какие аргументы переданы и какие пропущены.Using named arguments makes it easier to keep track of which arguments you passed and which you omitted.

Дополнительным аргументам предшествует ключевое слово Optional в определении процедуры.Optional arguments are preceded by the Optional keyword in the procedure definition. Для необязательного аргумента в определении процедуры можно также указать значение по умолчанию.You can also specify a default value for the optional argument in the procedure definition. Например:For example:

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

При вызове процедуры с необязательным аргументом можно выбрать, указывать или нет необязательный аргумент.When you call a procedure with an optional argument, you can choose whether or not to specify the optional argument. Если необязательный аргумент не указывается, используется значение по умолчанию, если таковое имеется.If you don't specify the optional argument, the default value, if any, is used. Если значение по умолчанию не указано, аргумент будет использоваться для любой переменной указанного типа.If no default value is specified, the argument would be for any variable of the specified type.

Приведенная ниже процедура включает два необязательных varRegion аргумента, переменные и varCountry .The following procedure includes two optional arguments, the varRegion and varCountry variables. Функция IsMissing определяет, передан ли процедуре необязательный аргумент Variant.The IsMissing function determines whether an optional Variant argument has been passed to the procedure.

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

Эту процедуру можно вызвать, используя именованные аргументы, как показано в следующем примере.You can call this procedure by using named arguments as shown in the following example.

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

См. такжеSee also

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.