Cómo OPTIMIZAR una MACRO generada con la Grabadora de macros en Excel
En este video tutorial te muestro cómo es grabar y optimizar una macro en la vida real, formateando un reporte verdadero.
He escuchado a algunas personas que no recomiendan el uso de la Grabadora de macros, sin embargo, creo que sólo es desconocimiento del potencial de esta herramienta.
Con la Grabadora podemos automatizar procesos que se pueden ejecutar con tan sólo un botonazo, además de generar código VBA para reutilizarlo y aprender propiedades de objetos.
Cómo OPTIMIZAR una MACRO generada con la Grabadora de macros en Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Usar la grabadora de macros para formatear un reporte
Figura 1. Reporte sin formatear en Excel.
Para grabar la macro, sigue los siguientes pasos:
-
Ve a la pestaña Vista > Macros > Grabar macro.
-
Elige un nombre, método abreviado y luego Aceptar.
-
Elimina las filas de la 1 a la 6.
-
Elimina las columnas D, E, H, I, J y N.
-
Selecciona la celda A2.
-
Da doble clic en el nodo inferior derecho para rellenar valores.
-
Elimina la fila 2.
-
Selecciona todas las celdas y ajusta el ancho de las columnas.
-
Ve a la pestaña Vista > Macros > Detener grabación.
Código VBA generador por la grabadora de macros en Excel
Sub Macro1() ' ' Macro1 Macro ' ' Rows("1:6").Select Selection.Delete Shift:=xlUp Range("D:E,H:J,N:N").Select Range("N1").Activate Selection.Delete Shift:=xlToLeft Selection.AutoFill Destination:=Range("A2:A267") Range("A2:A267").Select Rows("2:2").Select Selection.Delete Shift:=xlUp Cells.Select Cells.EntireColumn.AutoFit End Sub
Optimizar y mejorar el código generado
El código anterior que se generó con la grabadora tiene un problema, no detecta cuando seleccionamos la celda A2 y rellenamos y tampoco se adecúa a un reporte similar, pero con diferente cantidad de filas.
A continuación te pongo te pongo la macro optimizada, que además te da la opción de que decidas si quieres continuar o no.
Sub Macro1() ' Formatear reporte ' Macro generada por la grabadora, por optimizada ' exceleinfo.com Dim UltimaFila As Long Dim Pregunta As Byte Pregunta = MsgBox("Deseas continuar?", vbQuestion + vbYesNo) If Pregunta = vbNo Then Exit Sub Rows("1:6").EntireRow.Delete Range("D:E,H:J,N:N").EntireColumn.Delete UltimaFila = Range("A1").CurrentRegion.Rows.Count Range("A2").AutoFill Destination:=Range("A2:A" & UltimaFila) Rows("2:2").EntireRow.Delete Cells.EntireColumn.AutoFit Range("A1").Select MsgBox "Listo!", vbInformation End Sub
Descarga el archivo para practicar
Reporte para formatear – EXCELeINFO.zip
Si te gustó este tutorial, por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.