Parámetros opcionales

Actualización: noviembre 2007

Un parámetro de un procedimiento puede ser opcional si así se especifica y no es necesario proporcionarle argumentos al llamar al procedimiento. Los parámetros opcionales se indican mediante la palabra clave Optional en la definición del procedimiento. Se aplican las siguientes reglas:

  • Todos los parámetros opcionales de la definición del procedimiento deben especificar un valor predeterminado.

  • El valor predeterminado de un parámetro opcional debe ser una expresión constante.

  • Todos los parámetros que vayan a continuación de un parámetro opcional en la definición del procedimiento también deben ser opcionales.

La siguiente sintaxis muestra una declaración de procedimiento con un parámetro opcional:

Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)

Llamar a procedimientos con parámetros opcionales

Cuando se llama a un procedimiento con un parámetro opcional, se puede elegir si se proporciona o no el argumento. Si no se proporciona, el procedimiento utiliza el valor predeterminado declarado para dicho parámetro.

Si se omiten uno o más argumentos opcionales de la lista de argumentos, hay que utilizar comas sucesivas para delimitar sus posiciones. En el ejemplo de llamada siguiente se suministran los argumentos primero y cuarto, pero no el segundo ni el tercero:

Call sub name(argument 1, , , argument 4)

Determinar si un argumento opcional está presente

En tiempo de ejecución un procedimiento no puede detectar si un argumento determinado se ha omitido o si el código de llamada ha suministrado de forma explícita el valor predeterminado de dicho argumento. Si fuese necesario hacer esta distinción, se podría establecer como valor predeterminado un valor improbable. El siguiente procedimiento define el parámetro opcional office y comprueba si su valor predeterminado, QJZ, ha sido omitido en la llamada:

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

Si el parámetro opcional es un tipo de referencia, como String, puede utilizar Nothing como valor predeterminado, siempre y cuando éste no sea un valor esperado para el argumento.

Parámetros opcionales y sobrecarga

Otra forma de definir un procedimiento con parámetros opcionales consiste en utilizar una sobrecarga. Si tiene un parámetro opcional, puede definir dos versiones sobrecargadas del procedimiento, una que acepte el parámetro y otra sin él. Este planteamiento se complica a medida que aumenta el número de parámetros opcionales. No obstante, tiene la ventaja de que permite saber con total certeza si el programa de llamada ha suministrado o no cada argumento opcional.

Vea también

Tareas

Cómo: Definir parámetros opcionales para un procedimiento

Cómo: Llamar a un procedimiento que utiliza parámetros opcionales

Cómo: Determinar si se ha suministrado un parámetro opcional

Conceptos

Procedimientos en Visual Basic

Argumentos y parámetros de procedimiento

Pasar argumentos por valor y por referencia

Pasar argumentos por posición o por nombre

Matrices de parámetros

Sobrecarga de procedimientos

Referencia

Optional (Visual Basic)

ParamArray