Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/06/2008, 06:32
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 16 años
Puntos: 7
Respuesta: Pasar parámetros a una función

Efectivamente, ParamArray no puede ser opcional, pero puedes utilizar un pequeño truco, ya que ParamArray debes declararlo como Variant.

Dentro de la función, comprueba el tipo del primer elemento del ParamArray así:

Código:
Private Function MatrizOParam(ByVal ParamArray Matriz() As Variant) As Boolean
    ...
    If VarType(Matriz(0)) And vbArray <> 0 then
        ' El primer elemento es una matriz, puedes referenciar sus sub-elementos
        ' como Matriz(0)(0), Matriz(0)(1), etc.
    Else
        ' El primer elemento no es una matriz, así que puedes considerar leer el
        ' resto de parámetros de la función.
    End If
    ....
End Function
Además, para evitar errores, te recomiendo que lo primero que compruebes en la función es que el límite superior del ParamArray es mayor de -1, por si la llamas sin parámetros, así:

If UBound(Matriz) = -1 Then ' Se ha llamado a MatrizOParam sin argumentos

Espero que esto te sirva!

Última edición por Txoco; 08/06/2008 a las 06:35 Razón: Poner el código como dios manda