Noções básicas sobre argumentos nomeados e argumentos opcionaisUnderstanding named arguments and optional arguments

Quando você chama um procedimento sub ou Function , você pode fornecer argumentos de forma posicionada, na ordem em que eles aparecem na definição do procedimento, ou você pode fornecer os argumentos pelo nome sem considerar a posição.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.

Por exemplo, o procedimento **** a seguir usa três argumentos.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

Você pode chamar esse procedimento fornecendo seus argumentos na posição correta, cada um delimitado por uma vírgula, conforme mostrado no exemplo a seguir.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# 


Você também pode chamar esse procedimento fornecendo argumentos nomeados, delimitadondo cada um com uma vírgula.You can also call this procedure by supplying named arguments, delimiting each with a comma.

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


Um argumento nomeado consiste em um nome de argumento seguido por dois-pontos e um sinal de igual (: =), seguido do valor do argumento.A named argument consists of an argument name followed by a colon and an equal sign (:=), followed by the argument value.

Argumentos nomeados são especialmente úteis quando você está chamando um procedimento que tem argumentos opcionais.Named arguments are especially useful when you are calling a procedure that has optional arguments. Se você usar argumentos nomeados, não será necessário incluir vírgulas para indicar argumentos posicionais ausentes.If you use named arguments, you don't have to include commas to denote missing positional arguments. O uso de argumentos nomeados facilita o controle dos argumentos que você aprovou e que foram omitidos.Using named arguments makes it easier to keep track of which arguments you passed and which you omitted.

Argumentos opcionais são precedidos pela palavra-chave optional na definição do procedimento.Optional arguments are preceded by the Optional keyword in the procedure definition. Você também pode especificar um valor padrão para o argumento opcional na definição do procedimento.You can also specify a default value for the optional argument in the procedure definition. Por exemplo:For example:

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

Ao chamar um procedimento com um argumento opcional, você pode escolher se deseja ou não especificar o argumento opcional.When you call a procedure with an optional argument, you can choose whether or not to specify the optional argument. Se você não especificar o argumento opcional, o valor padrão, se houver, será usado.If you don't specify the optional argument, the default value, if any, is used. Se nenhum valor padrão for especificado, o argumento será para qualquer variável do tipo especificado.If no default value is specified, the argument would be for any variable of the specified type.

O procedimento a seguir inclui dois argumentos opcionais varRegion , varCountry as variáveis e.The following procedure includes two optional arguments, the varRegion and varCountry variables. A função IsMissing determina se um argumento opcional Variant foi passado para o procedimento.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

Você pode chamar esse procedimento usando argumentos nomeados conforme mostrado no exemplo a seguir.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 

Confira tambémSee also

Suporte e comentáriosSupport and feedback

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação?Have questions or feedback about Office VBA or this documentation? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.