visual procedimientos parametros opcionales con vba function vb6 arguments optional-arguments

vba - procedimientos - parametros opcionales c#



VB: ¿cómo pruebo si se proporcionan o no argumentos opcionales? (6)

¿Cómo pruebo si se proporcionan o no argumentos opcionales? - en VB6 / VBA

Function func (Optional ByRef arg As Variant = Nothing) If arg Is Nothing Then <----- run-time error 424 "object required" MsgBox "NOT SENT" End If End Function


Con una variante usaría la función NZ :

Function func (Optional ByRef arg As Variant = Nothing) If nz ( arg, 0 ) = 0 Then MsgBox "NOT SENT" End If End Function

También se puede usar con otros tipos de datos, solo tenga en cuenta que Cero cuenta como nulo o de longitud cero, por lo que nz(0,"") aún devuelve 0.


Puede usar la función IsMissing (). Pero este solo funciona con el tipo de datos Variant.


Puedes usar algo como:

function func(optional vNum as integer:=&HFFFF) ''&HFFFF value that is NEVER set on vNum If vNum = &HFFFF Then MsgBox "NOT SENT" End If End Function


Si IsMissing (arg) Entonces ...


Si está utilizando una cadena o una variable numérica, puede verificar el valor de la variable. Por ejemplo:

Function func (Optional Str as String, Optional Num as Integer) If Str = "" Then MsgBox "NOT SENT" End If If Num = 0 Then MsgBox "NOT SENT" End If End Function

Esto le permite usar variables no variantes.


Use IsMissing :

If IsMissing(arg) Then MsgBox "Parameter arg not passed" End If

Sin embargo, si recuerdo correctamente, esto no funciona cuando se da un valor predeterminado para el argumento, y en cualquier caso hace que usar el argumento predeterminado sea bastante redundante.