Share via


Información sobre argumentos con nombre y argumentos opcionales

Cuando se llama a un procedimiento Sub o Function , puede proporcionar argumentos posicionalmente, en el orden en que aparecen en la definición del procedimiento, o puede proporcionar los argumentos por nombre sin tener en cuenta la posición.

Por ejemplo, el siguiente procedimiento Sub toma tres argumentos.

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

Puede llamar a este procedimiento proporcionando sus argumentos en la posición correcta, cada uno delimitado por una coma, como se muestra en el ejemplo siguiente.

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

También puede llamar a este procedimiento proporcionando argumentos con nombre y delimitándolos mediante una coma.

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

Un argumento con nombre es un nombre de argumento seguido de dos puntos y un signo de igual (:=) al que le sigue el valor del argumento.

Los argumentos con nombre son especialmente útiles cuando se realiza una llamada a un procedimiento que cuenta con argumentos opcionales. Si usa argumentos con nombre, no tiene que incluir comas para indicar argumentos posicionales que falten. El uso de argumentos con nombre facilita el seguimiento de los argumentos pasados y omitidos.

Los argumentos opcionales están precedidos por la palabra clave Optional en la definición de procedimiento. También puede especificar un valor predeterminado para el argumento opcional en la definición de procedimiento. Por ejemplo:

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

Cuando llama a un procedimiento con un argumento opcional, puede elegir si especificar o no el argumento opcional. Si no especifica el argumento opcional, se usa el valor predeterminado, si lo hubiera. Si no se especifica ningún valor predeterminado, el argumento sería para cualquier variable del tipo especificado.

El siguiente procedimiento incluye dos argumentos opcionales: las varRegion variables y varCountry . La función IsMissing determina si se ha pasado un argumento Variant opcional al procedimiento.

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

Puede llamar a este procedimiento mediante argumentos con nombre, como se muestra en el ejemplo siguiente.

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

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.