Como eliminar una fila de un array dos dimensiones

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Avatar de Usuario
JoePublic
Mensajes: 36
Registrado: Dom Sep 06, 2020 5:34 pm

Como eliminar una fila de un array dos dimensiones

Mensaje por JoePublic »

Hola,
De una matriz o array MUY LARGO necesito eliminar algunos registros (filas) sin tener que pasarlo por un bucle para eliminarlos.

¿Alguien sabe que comando utilizar o como hacerlo de forma directa?
Como ejemplo vean el codigo. Busco para arrays bidimensionales como unidimensionales.
Con el comando Erase, lo borra, pero existe un lugar vacio dentro del array y yo quiero quitarlo por completo y que se corran las posiciones.
Es decir que del Array (1,2,3,4,5) al eliminar la posicion 1 el resultado sería Array (1,3,4,5).
He visto que con la librería nueva ScriptForge se puede utilizar el comando "slice" pero no se como.
Gracias.

Código: Seleccionar todo

Sub eliminaUnValor()
   Dim myArray () as Variant
   myArray = Array (1,2,3,4,5)
   Erase myArray (1) 'Este Vacía la posición pero necesito que se elimine también.
   MsgBox "fin"
End Sub

Última edición por JoePublic el Sab Sep 02, 2023 9:03 pm, editado 3 veces en total.
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.
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Como eliminar un elemento de un array

Mensaje por Neftali R »

Buen día,

Yo personalmente no conozco una forma directa de hacer eso, pero sí sé cómo hacerlo de forma indirecta con "JOIN" y "SPLIT", el potencial problema de este método, es que al final los valores de la matriz serán texto, String.

Código: Seleccionar todo

Sub eliminaUnValor()
   Dim sTmp As String, myArray () as Variant
   myArray = Array (1,2,3,4,5)
   Erase myArray (1) 'Este Vacía la posición pero necesito que se elimine también.
   sTmp = Join(myArray,"-")
   myArray = Split(sTmp,"--")
   sTmp = Join(myArray,"-")
   myArray = Split(sTmp,"-")
   MsgBox "fin"
End Sub

Sub eliminaUnValorResumido()
   Dim myArray () as Variant
   myArray = Array (1,2,3,4,5)
   Erase myArray (1) 'Este Vacía la posición pero necesito que se elimine también.
   myArray = Split(Join(Split(Join(myArray,"-"),"--"),"-"),"-")
   MsgBox "fin"
End Sub
Saludos.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
Avatar de Usuario
JoePublic
Mensajes: 36
Registrado: Dom Sep 06, 2020 5:34 pm

Re: Como eliminar un elemento de un array

Mensaje por JoePublic »

Gracias,
Pero me gustaria conocer alguna otra manera mas efectiva, no sólo para arrays unidimensionales, sino tambien bidimensionales. Si alguien conoce algun metodo o funcion más directo para hacer la macro en OooBasic o con la nueva librería de ScriptForge, ruego deje la solución.
Gracias a todo aquel que puede aportar un poco de luz.
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.
Longi
Mensajes: 808
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Como eliminar un elemento de un array

Mensaje por Longi »

Buenas!
Prueba con esto:
https://wiki.open-office.es/Funciones_p ... fice_Basic

A ver si te sirve! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Avatar de Usuario
JoePublic
Mensajes: 36
Registrado: Dom Sep 06, 2020 5:34 pm

Re: Como eliminar un elemento de un array dos dimensiones

Mensaje por JoePublic »

Lo siento. No me sirvio.
Todavia sigo buscando como eliminar un registro o fila de un array bidimensional (multidimensional) sin tener que pasar todo el array por un bucle for to next. Sabeis si con "slice" de Scriptforge se puede hacer...?. Busco ayuda !!!
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.
Responder