Hola FJCC-ES,
Muchas GRACIAS por contestar.
Su ejemplo anterior funciona !!! y es muy ilustrativo.
No sabia que un array simple de una dimension no era asi:
Código: Seleccionar todo
Dim Otra_Unidimensional() as Variant
Otra_Unidimensional = Array(1,2,3,4,5,6,7)
Print Otra_Unidimensional (2)
'Imprime el valor 3 y no es necesario poner el indice de fila 0. Este numero obedece al numero de posicion dentro del array.
Porque yo suelo hacer macros y las utilizo, de modo que al sacar un valor de ese array lo hago solo con un índice y creía que el hecho de tener una o dos dimensiones correspondia a si le pones uno o dos indices al array para leerlo, de modo que en su ejemplo de aqui abajo al meter dos indices (0)(2) en el metodo Print arrayUnidimensional(0)(2) correspondía a arrays de dos dimensiones.
Así pues, creía que al poblar rango de celdas en una hoja volcando los datos de un array, se podria hacer con arrays simples, sin tener que convertirlos a los arrays que usted me muestra, que para mi son de dos dimensiones porque hay que colocarle el indice de fila y el indice de columna.
Código: Seleccionar todo
Dim arrayUnidimensional(0) as Variant
arrayUnidimensional(0) = Array(1,2,3,4,5,6,7)
Print arrayUnidimensional(0)(2)
'Imprime el valor 3, pero debemos indicar el indice de fila 0 más el indice de columna numero 2 que obedece al numero de posicion dentro de la fila 0.
En la foto muestro como se ve en el IDE de LibreOffice con los parentesis dobles e indices que utiliza uno y otro.
- Dos arrays con sus dimensiones
- arrayUnidimenssional.jpg (51.88 KiB) Visto 2848 veces
1-Entonces, ¿No se puede poblar un rango de celdas de una hoja con un array simple, es decir con este: Otra_Unidimensional = Array(1,2,3,4,5,6,7) ???? (Con este array no puedo. Sale error). Parece que es necesario transformalo en array de dos indices -> arrayUnidimensional(0) = Array(1,2,3,4,5,6,7) (Este si que funciona es el ejemplo que Usted ha puesto).
2-Por otro lado tengo otra duda. Si el array tiene solo numeros, para poblar se utiliza el método .setData() y si el array es alfanumerico se utiliza el metodo .setDataArray(), Ejemplo:
Código: Seleccionar todo
oRango1.setData( arrayBidimensional )'para poblar array de nnumeros.
oRango5.setDataArray( arrayBidimensional_3 )'para poblar array alfanumerico (letras y numeros mezclados)
En el siguiente macro con datos alfanumericos me sale un error cuando voy a poblarlo en las celdas con el metodo .setDataArray()
Código: Seleccionar todo
Sub poblarRangoCeldas_3()
Dim oHojaActiva As Object
Dim oRango1 As Object
Dim oRango5 As Object
Dim arrayBidimensional(2) as Variant
arrayBidimensional(0) = Array(1,2,3)
arrayBidimensional(1) = Array("")'Faltan datos. Pero aqui no me sale error.
arrayBidimensional(2) = Array(7,8,"")
Dim arrayBidimensional_3(2) as Variant
'Array de 3 filas y 3 columnas. He vaciado algunos datos porque cuando se almacenan en el array, ese campo carece de datos.
arrayBidimensional_3(0) = Array(1,2,"Miguel") 'Estan todos los datos.
arrayBidimensional_3(1) = Array("",3) 'Aqui falta un dato, y es el de la ultima columna de esa fila.
arrayBidimensional_3(2) = Array(7,"Carol","") 'Estan todos los datos.
oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
oRango1 = oHojaActiva.getCellRangeByName("A1:C3")
oRango5 = oHojaActiva.getCellRangeByName("A6:C8")
oRango1.setData( arrayBidimensional )'No sale error cuando el array tiene letras o esta vacio.
oRango5.setDataArray( arrayBidimensional_3 )'Sale Error cuando alguna posicion no tiene valor, es decir esta vacia.
End Sub
Me sale un error al poblar un rango de celdas y es porque el array "arrayBidimensional_3" no esta lleno del todo y utilizo el metodo .setDataArray()
Si estuviera lleno con datos o con comillas no saldría error. Aun así las celdas se llenan con los datos que contiene el array.
Sin embargo el array primero arrayBidimensional al utilizar el metodo .setData() no sale error, pero el texto se ve reemplazado por ceros.
3-¿Sabe si hay alguna manera de poblar el array sin que salga esta ventana de error, me refiero a la linea: oRango5.setDataArray( arrayBidimensional_3 ) ????
Tengo que decir que el rango de celdas a poblar esta bien dimensionado.
Usuario apasionado de las hojas de cálculo. Novato aprendiz de macros con OOo Basic y VBA.
LibreOffice Version: 6.4.3.2 (x64) y Sistema Operativo Windows 10 Home.