Parámetros opcionales
Publicado: Dom Feb 28, 2016 11:33 pm
Buenas noches.
Estoy intentando pasar parámetros opcionales a una función.
Siguiendo el manual de Mauricio Baeza, al entrar en la función compruebo si tiene asignado un valor, y si no es así le asigno un valor por defecto.
En mi caso paso un parámetro no opcional y 4 opcionales. De los 4 parámetros opcionales unas veces me interesa pasar unos y otras otros.
El código utilizado es el siguiente:
Este código funciona bien como muestro en la siguiente captura de pantalla:
En cambio, cuando intento pasar algunos de los parámetros opcionales da problemas
Cambiando la línea de llamada a la función :
Por otra en la que se da uno de los parámetros opcionales:
El valor de la variable las variable a las que no se ha dado valor adquieren el valor 448 y no se reconocen como Missing
¿Como puedo ingresar el valor de algunos de los parámetros opcionales y que el resto los siga reconociendo como "Missing"
Un saludo
Estoy intentando pasar parámetros opcionales a una función.
Siguiendo el manual de Mauricio Baeza, al entrar en la función compruebo si tiene asignado un valor, y si no es así le asigno un valor por defecto.
En mi caso paso un parámetro no opcional y 4 opcionales. De los 4 parámetros opcionales unas veces me interesa pasar unos y otras otros.
El código utilizado es el siguiente:
Código: Seleccionar todo
Sub Prueba
Dim Aux as Double
Aux = ParOpcional(1)
End Sub
Function ParOpcional(A as integer, Optional B as Double, Optional C as Double, Optional D as Double, Optional E as Double) as Double
Select case A
Case 1
MsgBox "B= " & B
If IsMissing(B) Then B=5
MsgBox "C= " & C
If IsMissing(C) Then C=6
MsgBox "D= " & D
If IsMissing(D) Then D=7
MsgBox "E= " & E
If IsMissing(E) Then E=8
Case 2
MsgBox B
If IsMissing(B) Then B=1
MsgBox C
If IsMissing(C) Then C=3
MsgBox D
If IsMissing(D) Then D=5
MsgBox E
If IsMissing(E) Then E=7
Case 3
MsgBox B
If IsMissing(B) Then B=2
MsgBox C
If IsMissing(C) Then C=4
MsgBox D
If IsMissing(D) Then D=6
MsgBox E
If IsMissing(E) Then E=8
Case Else
MsgBox B
If IsMissing(B) Then B=11
MsgBox C
If IsMissing(C) Then C=12
MsgBox D
If IsMissing(D) Then D=13
MsgBox E
If IsMissing(E) Then E=14
End Select
ParOpcional = A + B^0.5 - C/2 + D/11 - E*5
End Function
Cambiando la línea de llamada a la función :
Código: Seleccionar todo
Aux = ParOpcional(1)
Código: Seleccionar todo
Aux = ParOpcional(1,,,,3,)
Un saludo