vacias ultima toda segun rango macro filas fila eliminar condicion blanco excel vba

ultima - Eliminar una fila en Excel VBA



macro eliminar filas vacias excel (4)

Algo como esto lo hará:

Rows("12:12").Select Selection.Delete

Entonces, en tu código se vería algo como esto:

Rows(CStr(rand) & ":" & CStr(rand)).Select Selection.Delete

Tengo este fragmento de código que encuentra la fila de Excel de un elemento de una lista y elimina los elementos de una lista. Lo que quiero ... es eliminar la fila de Excel también.

El código esta aqui

Private Sub imperecheaza_Click() Dim ws As Worksheet Dim Rand As Long Set ws = Worksheets("BD_IR") Rand = 3 Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000 If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then ws.Range(Rand, 1).EntireRow.Delete ''(here I want to delete the entire row that meets the criteria from the If statement) gksluri.RemoveItem gksluri.ListIndex Exit Do End If Rand = Rand + 1 Loop End Sub

Donde agregué ws.Range (Rand, 1) .EntireRow.Delete es donde quiero eliminar toda la fila, pero no sé cómo hacerlo. Lo que quiero ... si encuentra el mismo valor en una celda como en algún elemento seleccionado de mi lista para poder eliminar tanto la fila completa en excel como el elemento del cuadro de lista. Funciona para eliminar el elemento de la lista, pero no sé cómo eliminar la fila también


Cambia tu línea

ws.Range(Rand, 1).EntireRow.Delete

a

ws.Cells(Rand, 1).EntireRow.Delete


La solución de Chris Nielsen es simple y funcionará bien. Una opción un poco más corta sería ...

ws.Rows(Rand).Delete

... tenga en cuenta que no es necesario especificar un Shift al eliminar una fila ya que, por definición, no es posible desplazarse hacia la izquierda

A propósito, mi método preferido para eliminar filas es usar ...

ws.Rows(Rand) = ""

... en el ciclo inicial. A continuación, utilizo una función Ordenar para insertar estas filas en la parte inferior de los datos. La razón principal de esto es porque eliminar filas individuales puede ser un procedimiento muy lento (si está borrando> 100). También asegura que no se pierde nada según el comentario de Robert Ilbrink

Puede aprender el código para clasificar grabando una macro y reduciendo el código como se demuestra en este video experto de Excel . Tengo la sospecha de que el mejor método (Rango ("A1: Z10"). Sort Key1: = Range ("A1"), Order1: = xlSortAscending / Descending, Header: = xlSí / No) solo se puede descubrir en 2007 versiones de Excel ... pero siempre puede reducir el código equivalente de 2007/2010

Unir más puntos ... si su lista no está ordenada por una columna y desea conservar el pedido, puede colocar el número de fila ''Rand'' en una columna libre a la derecha de cada fila mientras recorre. Luego ordenarías por ese comentario y lo eliminarías

Si sus filas de datos contienen formato, es posible que desee encontrar el final del nuevo rango de datos y eliminar las filas que haya borrado anteriormente. Eso es para mantener el tamaño del archivo abajo. Tenga en cuenta que una sola eliminación grande al final del procedimiento no perjudicará el rendimiento de su código de la misma manera que eliminar las filas únicas.


Mejor aún, utilice la unión para tomar todas las filas que desea eliminar y luego eliminarlas todas a la vez. Las filas no necesitan ser continuas.

dim rng as range dim rDel as range for each rng in {the range you''re searching} if {Conditions to be met} = true then if not rng is nothing then set rDel = union(rng,rDel) else set rDel = rng end if end if next rDel.entirerow.delete

De esta manera, no tiene que preocuparse por ordenar o que las cosas estén en la parte inferior.