Eliminar celdas vacías en Excel VBA

Tengo una macro para eliminar celdas vacías automáticamente en una tabla.

Private Sub Worksheet_Activate()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Dim fila As Long
Dim max As Long
Application.ScreenUpdating = False
fila = 2
Range("D1000000").End(xlUp).Select
max = Selection.Row
 Do While fila < max
     If Cells(fila, 1) = 0 Then
         Cells(fila, 1).EntireRow.Delete
         max = max - 1
     Else
         fila = fila + 1
     End If
 Loop
Application.ScreenUpdating = True
End Sub

Lo que pasa es que si la ultima fila de la tabla esta vacía no  la elimina y de deja un hueco en blanco en la tabla. Todas las demas si estan por el medio se borran pero la última no.

¿Qué puede ser?

2 Respuestas

Respuesta
1

[Hola

Lo que pasa es que por la forma en que eliminas filas y sumas y restas tus variables en tu bucle, el "If" nunca evalúa la última celda, por eso al estar vacía queda tal cual.

Una forma en que puedes mantener tu forma de hacerlo es "ajustar" la tabla al final. Agrega estas líneas:

Dim nFilas As Long, UltimaFila As Long
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row
Let nFilas = Application.WorksheetFunction.CountA(Range("A1:A" & UltimaFila))
ActiveSheet. ListObjects(1). Resize Range("A1:D" & nFilas)

Ojo, estoy suponiendo que la columna "D" es la última de tu tabla, de no ser así, solo cambia por la correspondiente. Asimismo estoy suponiendo que trabajas sobre la hoja activa y que solo hay una tabla ahí

Comentas

Abraham Valencia

¡Gracias! Muchas gracias he cambiado la ultima columna y me va perfectamente. Gracias por tu ayuda

Hay veces que debajo de la tabla me quedan datos residuales que no me interesan que salgan.

¿Cómo podría hacer para que la línea debajo de la tabla se borren los datos de manera automática?

Me explico, quiero que cuando se auto-ajuste la tabla la línea situada justo abajo borre los datos de de esa fila (si hay)

Sugiero abrir una nueva pregunta y dar más detalles.

Saludos]

Abraham Valencia

Respuesta
1

Esto puede aportar algo

https://youtu.be/v43-X_SNWts

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas