2.2. Modificación de una macro grabada
Introducción
En la lección anterior aprendimos a grabar una macro con el Grabador de Macros. Sin embargo, el código que genera no siempre es eficiente y suele contener pasos innecesarios.
En esta lección, aprenderemos cómo modificar una macro grabada en el Editor de VBA para hacerla más flexible y optimizada.
¿Dónde se encuentra el código de una macro grabada?
Para ver y modificar el código de una macro grabada, sigue estos pasos:
1️⃣ Abre Excel y presiona ALT + F11
para acceder al Editor de VBA.
2️⃣ En el panel izquierdo, busca «Módulos» dentro de «Módulos de Microsoft Excel».
3️⃣ Haz doble clic en Módulo1 (o el módulo donde se guardó la macro).
4️⃣ Verás el código VBA generado automáticamente.
📌 Ejemplo: Código de una macro grabada
Supongamos que grabamos una macro que cambia el color de fondo de una celda a amarillo.
El código generado por el grabador será algo así:
vbaCopiarEditarSub Macro1()
Range("A1").Select
Selection.Interior.Color = RGB(255, 255, 0)
End Sub
📢 Problema: Este código siempre cambia el color de A1, sin importar qué celda tengamos seleccionada.
Optimización de una macro grabada
Podemos hacer que la macro funcione en cualquier celda que seleccionemos. Para ello, eliminamos la línea Range("A1").Select
y usamos ActiveCell
:
vbaCopiarEditarSub ResaltarCelda()
ActiveCell.Interior.Color = RGB(255, 255, 0)
End Sub
✅ Ahora, la macro cambiará el color de cualquier celda activa, no solo A1.
Hacer que la macro funcione en un rango de celdas
Si queremos que la macro afecte a varias celdas en lugar de solo una, podemos modificar el código así:
vbaCopiarEditarSub ResaltarRango()
Selection.Interior.Color = RGB(255, 255, 0)
End Sub
📌 Diferencia entre ActiveCell
y Selection
ActiveCell
afecta solo a una celda seleccionada.Selection
aplica el cambio a todas las celdas seleccionadas.
Eliminar pasos innecesarios en una macro grabada
Las macros grabadas incluyen pasos que pueden eliminarse sin afectar su funcionalidad.
📌 Ejemplo de macro grabada con código innecesario:
vbCopiarEditarSub MacroLarga()
Range("A1").Select
Selection.Font.Bold = True
Selection.Font.Color = RGB(255, 0, 0)
Selection.Font.Size = 14
End Sub
📌 Versión optimizada:
vbaCopiarEditarSub FormatoTexto()
Range("A1").Font.Bold = True
Range("A1").Font.Color = RGB(255, 0, 0)
Range("A1").Font.Size = 14
End Sub
✅ Eliminamos el Select
, lo que hace que el código sea más rápido y eficiente.
Conclusión
Las macros grabadas contienen código innecesario que podemos optimizar para hacerlas más eficientes. Modificarlas en el Editor de VBA nos permite hacerlas más flexibles, eliminando pasos innecesarios y adaptándolas a diferentes situaciones.
En la próxima lección, aprenderemos cómo almacenar macros en diferentes ubicaciones, como el Libro de Macros Personal, para usarlas en cualquier archivo de Excel.
🚀 ¡Sigamos avanzando!