Compartilhar via


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

Quando chama um procedimento Sub ou Função , pode fornecer argumentos posicionalmente, pela ordem em que aparecem na definição do procedimento ou pode fornecer os argumentos por nome sem considerar a posição.

Por exemplo, o procedimento Sub seguinte utiliza três argumentos.

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

Pode chamar este procedimento ao fornecer os respetivos argumentos na posição correta, cada um delimitado por uma vírgula, conforme mostrado no exemplo seguinte.

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

Também pode chamar este procedimento ao fornecer argumentos com nome, delimitando cada um com uma vírgula.

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

Um argumento com nome consiste num nome de argumento seguido de dois pontos e um sinal de igual (:=), seguido do valor do argumento.

Os argumentos nomeados são especialmente úteis quando está a chamar um procedimento que tem argumentos opcionais. Se utilizar argumentos com nome, não tem de incluir vírgulas para denotar argumentos posicionais em falta. A utilização de argumentos nomeados torna mais fácil controlar os argumentos que transmitiu e os quais omitiu.

Os argumentos opcionais são precedidos pelo palavra-chaveOpcional na definição do procedimento. Também pode especificar um valor predefinido para o argumento opcional na definição do procedimento. Por exemplo:

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

Quando chama um procedimento com um argumento opcional, pode escolher se pretende ou não especificar o argumento opcional. Se não especificar o argumento opcional, é utilizado o valor predefinido, se existir. Se não for especificado nenhum valor predefinido, o argumento será para qualquer variável do tipo especificado.

O procedimento seguinte inclui dois argumentos opcionais, as varRegion variáveis e varCountry . A função IsMissing determina se um argumento Variante opcional foi transmitido ao 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

Pode chamar este procedimento ao utilizar argumentos com nome, conforme mostrado no exemplo seguinte.

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.