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.