Estube probando con UBound(), pero solo me devuelve la cantidad de filas pero no de columnas.
La pregunta exacta sería, de que forma puedo hacer que UBound me cuente las columna en vez de las filas?

| |||
Para saber la cantidad de columnas prueba con este ejemplo amigo Dim Mayor Dim MiMatriz(1 To 10, 5 To 15, 10 To 20) ' Declara las variables de matriz. Dim UnaMatriz(10) Mayor = UBound(MiMatriz, 1) ' Devuelve 10. Mayor = UBound(MiMatriz, 3) ' Devuelve 20. Mayor = UBound(UnaMatriz) ' Devuelve 10. |
| ||||
aldo1982, eso hice para poder seguir con el desarrollo, pero siento curiosidad en saber si VB lo hace. Sebasedeno, gracias por el ejemplo, lo probaré y les contaré si me dió resultado. ![]()
__________________ .::RsOfT::. --El que se aferra a lo conocido, nunca conocerá lo desconocido-- --Es intentando lo imposible como se realiza lo posible-- --Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance-- |
| ||||
RsOfT: Visual Basic utiliza como Array's una estructura de datos conocida como SafeArray. En esta se especifican el número de dimensiones (o columnas, como tú las llamas), características, longitud de cada elemento... Revisa la documentación del SDK. El caso es que el primer elemento de la estructura SafeArray contiene el número de dimensiones del array en un integer. Entonces, con la dirección del SafeArray y el método RtlMoveMemory de la API, fácilmente obtendrás este dato y otros en caso de que te sean necesarios.
Código:
Option Explicit Private Declare Sub RtlMoveMemory Lib "kernel32" ( _ ByRef Destination As Any, _ ByRef Source As Any, _ ByVal Length As Long) Private Declare Function VarPtrArr Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long Dim testArr(0 To 15, -20 To 20, 10, 30, 60) As Long Private Sub Form_Load() Dim arrPtr As Long Dim arrDims As Integer RtlMoveMemory arrPtr, ByVal VarPtrArr(testArr()), 4& RtlMoveMemory arrDims, ByVal arrPtr, 2& Debug.Print "Dimensiones del Array: " & arrDims End Sub |
| ||||
Gracias por tu ayuda Beakdan, pero llevándome de lo que me dijo Sebasedeno, lo resolví así:
Código:
Esto me devuelve exactamente el número que estaba buscando.For i = 0 To UBound(Matriz, UBound(Matriz)) ![]()
__________________ .::RsOfT::. --El que se aferra a lo conocido, nunca conocerá lo desconocido-- --Es intentando lo imposible como se realiza lo posible-- --Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance-- |