En el último curso de Excel que he impartido, durante la sesión que trataba de Visual Basic for Applications (VBA), un alumno me solicitaba un procedimiento (macro o subrutina) para automatizar la eliminación masiva de filas que estuvieran totalmente en blanco. Además, necesitaba indicar las filas primera y última de la zona donde era necesario el "rastreo" y eliminación.
Voy a aprovechar la pregunta de este alumno para publicar en este post, una solución a dicho "problema".
Comencemos:
PASO 1:
Presionar ALT+F11 para activar el editor de VBA y hacer click con el botón derecho en la carpeta "Microsoft Excel Objetos" del proyecto o libro que deseemos (si lo hacemos en la carpeta "Microsoft Excel Objetos" del libro de macros PERSONAL.XLSB ** que podremos ver en el explorador de proyectos, tendremos la macro disponible permanentemente en nuestro Excel... y no sólo disponible para un libro en concreto). En el menú contextual, seleccionamos "Insertar / Módulo":
PASO 2:
En la ventana de código del nuevo módulo, que se abre a la derecha, escribimos el siguiente código (o copiamos-pegamos del archivo que puede el lector descargarse al final de este artículo):
Sub EliminarFilasVacías()
'Variables y actualización de pantalla
Dim FilaInicial As String
Dim FilaFinal As Integer
Dim Seguridad As Integer
Application.ScreenUpdating = False
'Introducción de fila inicial de rastreo
On Error GoTo 1
FilaInicial = InputBox("Introduzca nº de fila inicial para rastreo", "Fila inicial de rastreo")
'Introducción de fila final de rastreo
FilaFinal = Val(InputBox("¿Hasta que nº de fila quiere rastrear?", "Última fila a rastrear"))
If FilaFinal = 0 Then
GoTo 1
End If
'Pregunta de seguridad
Seguridad = MsgBox("¿Está seguro de eliminar todas las filas vacías?", vbYesNo, "¡Atención!")
If Seguridad = vbNo Then
Exit Sub
End If
'Rastreo y eliminación de filas vacías
For I = ActiveCell.Row To FilaFinal
If Application.WorksheetFunction.CountA(ActiveCell.EntireRow) <> 0 Then
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.EntireRow.Delete
End If
Next
Exit Sub
'Gestión de errores
1 MsgBox "Ha introducido datos erróneamente o ha cancelado un cuadro de diálogo"
End Sub
Una vez hecho esto, cerramos el editor de VBA.
PASO 3:
Asignaremos la macro a una combinación de teclas. Para ello, en la Ficha Programador, hacemos click en el botón "Macros". Seguidamente, buscamos el nombre de nuestra macro (EliminarFilasVacías) TENIENDO SELECCIONADO EL LIBRO PERSONAL XLSB, y la seleccionamos. Después, hacemos click en el botón "Opciones..." y por último, introducimos la letra que deseamos acompañe a CTRL.
Por supueso, también podemos asignar la macro a un botón (por ejemplo) o a una forma.
Si desea ver en funcionamiento la macro y además poder copiarla a su libro de macros personal (en vez de escribirla), puede descargar el siguiente archivo:
** Recordamos que el libro de macros PERSONAL.XLSB es un libro que se abre de forma automática (en modo oculto) siempre y cuando exista en nuestro equipo. Para ello, tenemos que haber grabado alguna macro en él alguna vez, puesto que Excel lo crea automáticamente.
Si desea llevar a la práctica todo lo que le hemos ofrecido en este artículo, puede asistir a nuestros cursos prácticos de Excel o puede solicitarlos in company:
Gracias por el aporte, excelente trabajo
ResponderEliminarExelente muy util... me ahorrare mucho tiempo
ResponderEliminarMuy buen ejemplo. Había buscado otras rutinas parecidas pero esta está muy bien.
ResponderEliminarGracias
GRACIAS pero tengo una duda el problema es que voy a colocar hasta la casilla 100.000 y sale error como puede solucionarlo o me podes ayudar con algo para este archivo tan extenso o mas
ResponderEliminargracias
Cambia el el tipo de dato integer de la variale FIlaFinal por uno que almacene mayor informaciòn
EliminarEl tipo de datos Integer debe almacenar hasta +- 2.147.483.647 y debería ser suficiente para los aprox. 1.048.000 registros de Excel. Por lo tanto, quizá el error venga por otra cuestión.
EliminarSaludos.
Excelente!!
ResponderEliminarGracias hermano me sirvio de mucho tu ejemplo no eres como tros que te florean y al final nada
ResponderEliminarMUY BUEN APORTE FUNCIONA LA "R" GRACIAS
ResponderEliminarMUY MUY BUENA!!!
ResponderEliminar