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

Quando você chama um procedimento Sub ou Function , pode fornecer argumentos posicionalmente, na ordem em que aparecem na definição do procedimento, ou pode fornecer os argumentos pelo nome, independentemente da 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 um 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 dois-pontos e um sinal de igual (:=), seguido pelo valor do argumento.

Os 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 indicar argumentos posicionais ausentes. O uso de argumentos nomeados facilita o acompanhamento de quais argumentos você aprovou e quais omitiu.

Os argumentos opcionais são precedidos pela palavra-chaveOptional na definição do procedimento. Também é possível especificar um valor padrão para o argumento opcional na definição de 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 and 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.