Jump to content

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.

Edited by xboxfile
Link to comment
Share on other sites

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
  • ....
Edited by Antoni
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

Privacy Policy