Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede especificar que un parámetro de procedimiento es opcional y no se debe proporcionar ningún argumento para él cuando se llama al procedimiento.
Los parámetros opcionales se indican mediante la Optional
palabra clave en la definición del procedimiento. Se aplican las reglas siguientes:
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 siguen a un parámetro opcional en la definición del procedimiento también deben ser opcionales.
La sintaxis siguiente muestra una declaración de procedimiento con un parámetro opcional:
Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Procedimientos de llamada con parámetros opcionales
Al llamar a un procedimiento con un parámetro opcional, puede elegir si se debe proporcionar el argumento . Si no lo hace, el procedimiento usa el valor predeterminado declarado para ese parámetro.
Al omitir uno o varios argumentos opcionales en la lista de argumentos, se usan comas sucesivas para marcar sus posiciones. La llamada de ejemplo siguiente proporciona los argumentos primero y cuarto, pero no el segundo o el tercero:
Sub name(argument 1, , , argument 4)
En el ejemplo siguiente se realizan varias llamadas a la MsgBox
función .
MsgBox
tiene un parámetro obligatorio y dos parámetros opcionales.
La primera llamada a MsgBox
proporciona los tres argumentos en el orden que MsgBox
los define. La segunda llamada proporciona solo el argumento necesario. La tercera y la cuarta llamada proporcionan el primer y el tercer argumento. La tercera llamada lo hace por posición y la cuarta llamada lo hace por nombre.
MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")
Determinar si existe un argumento opcional
Un procedimiento no puede detectar en tiempo de ejecución si se ha omitido un argumento determinado o si el código de llamada ha proporcionado explícitamente el valor predeterminado. Si necesita realizar esta distinción, puede establecer un valor poco probable como predeterminado. El procedimiento siguiente define el parámetro office
opcional y comprueba su valor predeterminado, QJZ
, para ver si se ha 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 usar Nothing
como valor predeterminado, siempre que no sea un valor esperado para el argumento.
Parámetros opcionales y sobrecarga
Otra manera de definir un procedimiento con parámetros opcionales es usar la sobrecarga. Si tiene un parámetro opcional, puede definir dos versiones sobrecargadas del procedimiento, una aceptando el parámetro y otra sin él. Este enfoque se vuelve más complicado a medida que aumenta el número de parámetros opcionales. Sin embargo, su ventaja es que puede estar absolutamente seguro de si el programa de llamada proporcionó cada argumento opcional.