Saltar al contenido

Eliminar fila en matriz (array)


xboxfile

Recommended Posts

Hola, un saludo a tod@s.

Mi consulta es muy sencilla (o no) pero no he visto nada relacionado con esto por Google, quizás desconozco las palabras exactas.

Me explico, quiero eliminar una fila entera de una array de varias columnas de forma similar a como lo hace nativamente Excel, que seleccionas unas celdas, botón derecho, Eliminar, y el te desplaza todas las de debajo arriba.

He probado con un bucle y subir todo lo de debajo arriba una fila copiando datos, pero lo veo demasiado, y puede que haya algún comando o algún método que lo haga y yo lo desconozca.

Espero haberme explicado con claridad.

No subo ejemplo porque mi pregunta es más bien teórica, con que alguien me apunte algo ya me buscaría la vida.

Muchas gracias.

Enlace a comentario
Compartir con otras webs

Hasta donde yo se, no existe nada parecido a Remove MiArray (i).

Existen varios trucos en función de cada situación, por ejemplo:

  • Pasar el array a una hoja, eliminar la fila y volver a cargar el array
  • Marcar el elemento de alguna manera, cero, blanco, ..., para poder identificar el elemento y actuar en consecuencia
  • ....
Enlace a comentario
Compartir con otras webs

Muchas gracias Antoni, como siempre, un placer saludarte. 

Es lo que me temía, lo marcaré y al pasarlo a la hoja omito esa fila y ya está. 

La idea es que aprovechando que se puede pasar a la hoja co un simple

MiRango= miarray te lo pasa sin bucles ni nada. 

Se ha intentado, gracias y hasta otra. 

Tema solucionado

Enlace a comentario
Compartir con otras webs

Hola. Todavía estoy a tiempo de publicar.

Por si alguien llega a este post buscando eliminar filas.

Voy a poner el código que me he hecho para eliminar filas de una array, ya que no se puede directamente tal y como lo hace Excel.

En mi caso la Array se llama "IdLibres". Evidentemente, está dentro de un proyecto más grande, pero por si solo le puede valer a cualquiera cambiando a sus nombres de array.

Muchas gracias.

Private Sub BorraFilas ()

Dim i, j, n, uFila, uCol, Fila, Col, Id As Integer
Dim IdLibres, IdLibresTmp() As Variant

'Para generar nuevo Id antes buscamos en array "IdLibres" Id's libres borrados anteriormente
Do While IdLibres(i, ListActivoP0 - 1) <> Empty '<- 4 columnas de más a la derecha
    Id = IdLibres(i, ListActivoP0 - 1)

    If Id > 0 Then '<- Si había un Id disponible
        IdLibres(i, ListActivoP0 - 1) = "XXBorrarXX" '<- Lo marcamos para borrarlo luego
        Exit Do
    End If
    i = i + 1
Loop

'Subimos todas las filas borradas en array "IdLibres" usando una memoria temporal igual
IdLibresTmp = IdLibres'<- Copiamos la array
uFila = UBound(IdLibres): uCol = UBound(IdLibres, 2) '<- Guardamos número de filas y columnas para antes de redimensionar
ReDim IdLibres(uFila, uCol) '<- Borramos la array master

'Volcamos desde la array temporal a la buena todo menos lo que tiene marca "XXBorrarXX"
For j = 0 To NumListBoxP0 - 1
    i = 0: Fila = 0
    Do While IdLibresTmp(i, j) <> Empty
        If IdLibresTmp(i, j) <> "XXBorrarXX" Then
            IdLibres(Fila, j) = IdLibresTmp(i, j)
            Fila = Fila + 1
        End If
        i = i + 1
    Loop
Next j

End Sub

 

TEMA SOLUCIONADO

Enlace a comentario
Compartir con otras webs

En 28/11/2020 at 14:57 , xboxfile dijo:

Me explico, quiero eliminar una fila entera de una array de varias columnas de forma similar a como lo hace nativamente Excel, que seleccionas unas celdas, botón derecho, Eliminar, y el te desplaza todas las de debajo arriba.

He probado con un bucle y subir todo lo de debajo arriba una fila copiando datos, pero lo veo demasiado, y puede que haya algún comando o algún método que lo haga y yo lo desconozca.

Hola

Te lo dejo mas facil... no cargues en la matriz esa(s) fila(s)

 

Saludos 

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.