Noções básicas sobre argumentos nomeados e argumentos opcionais

Ao chamar um procedimento Sub ou Function , você pode fornecer argumentos posicionalmente, na ordem em que eles aparecem na definição do procedimento ou você pode fornecer os argumentos pelo nome sem considerar a posição.

Por exemplo, o procedimento Sub a seguir usa três argumentos.

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 delimitado por uma vírgula, conforme mostrado no exemplo a seguir.

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

Você também pode chamar esse procedimento fornecendo argumentos nomeados, delimitando cada um com uma vírgula.

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

Um argumento nomeado consiste em um nome de argumento seguido por um ponto e um sinal igual (:=), seguido pelo valor do argumento.

Argumentos nomeados são especialmente úteis quando você está chamando um procedimento que tem argumentos opcionais. Se você usar argumentos nomeados, não precisará incluir vírgulas para denotar argumentos posicionais ausentes. O uso de argumentos nomeados facilita o controle de quais argumentos você passou e quais você omitiu.

Os argumentos opcionais são precedidos pela palavra-chaveOpcional na definição do procedimento. Você também pode especificar um valor padrão para o argumento opcional na definição do procedimento. Por exemplo:

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. Se você não especificar o argumento opcional, o valor padrão, se houver, será usado. Se nenhum valor padrão for especificado, o argumento será para qualquer variável do tipo especificado.

O procedimento a seguir inclui dois argumentos opcionais, as varRegion variáveis e varCountry . A função IsMissing determina se um argumento variant opcional foi passado para o procedimento.

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.

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

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? 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.