Una familia de software de hoja de cálculo de Microsoft con herramientas para analizar, trazar y comunicar datos.
Hola:
Entonces tienes que comprobar el tipo de objeto recibido en el parámetro MATRIZ, cuando es un rango te funciona, pero cuando es el resultado de una función que devuelve un array variant(1 to X, 1 to Y), debes cambiar tus funciones para que distingan entre uno u otro parámetro, en tu ejemplo podría ser:
If TypeOf MATRIZ Is Range Then
X = MATRIZ.Rows.Count
Y = MATRIZ.Columns.Count
Else
X = UBound(MATRIZ, 1) ' Comprueba que el 1 son filas y no columnas, nunca me acuerdo ;-)
Y = UBound(MATRIZ, 2) ' Si es al reves, pues cambias el 1 por el 2 y viceversa.
' También deberías poner un control de errores para verificar que MATRIZ es un array de 2 dimensiones.
End If
Espero que te sirva.
Un saludo