7.1. Introducción a los eventos en VBA
Introducción
En VBA, los eventos permiten ejecutar macros automáticamente cuando ocurre una acción en Excel, como:
🔹 Cambiar el valor de una celda.
🔹 Seleccionar una hoja.
🔹 Abrir o cerrar un libro de Excel.
🔹 Hacer clic en un botón.
✅ ¿Por qué son útiles los eventos?
- Automatizan tareas sin necesidad de ejecutar macros manualmente.
- Permiten validar datos en tiempo real.
- Mejoran la experiencia del usuario en Excel.
En esta lección aprenderemos qué son los eventos en VBA y cómo utilizarlos.
1️⃣ ¿Qué es un evento en VBA?
Un evento en VBA es una acción que ocurre en Excel y que activa automáticamente una macro.
📢 Ejemplo de eventos comunes en Excel:
Evento | Cuándo ocurre |
---|---|
Workbook_Open | Al abrir un archivo de Excel |
Workbook_BeforeClose | Antes de cerrar un archivo |
Worksheet_Change | Cuando cambia el valor de una celda |
Worksheet_SelectionChange | Cuando el usuario selecciona una celda |
Workbook_SheetActivate | Cuando se activa una hoja específica |
📢 Regla: Los eventos permiten ejecutar código VBA sin intervención manual.
2️⃣ ¿Dónde se escriben los eventos en VBA?
Los eventos no se escriben en un módulo estándar, sino dentro de la hoja o el libro donde queremos que ocurran.
📌 Pasos para agregar un evento en una hoja específica:
1️⃣ Abre el Editor de VBA (ALT + F11
).
2️⃣ En el Explorador de Proyectos, selecciona la hoja donde quieres programar el evento (por ejemplo, Hoja1
).
3️⃣ Haz doble clic en la hoja y selecciona Worksheet en la lista desplegable.
4️⃣ En la segunda lista desplegable, elige el evento que deseas utilizar (por ejemplo, Change
).
📌 Pasos para agregar un evento en todo el libro:
1️⃣ En el Editor de VBA, haz doble clic en ThisWorkbook
.
2️⃣ En la lista desplegable, selecciona Workbook.
3️⃣ En la segunda lista, elige el evento deseado (por ejemplo, Open
).
📢 Regla: Los eventos de hojas van en SheetX (NombreHoja)
, los eventos de libro van en ThisWorkbook
.
3️⃣ Ejemplo de evento: Ejecutar una macro al abrir el archivo
El evento Workbook_Open se activa automáticamente cuando se abre el archivo.
📌 Ejemplo: Mostrar un mensaje de bienvenida al abrir Excel
vbaCopiarEditarPrivate Sub Workbook_Open()
MsgBox "¡Bienvenido a este archivo de Excel!", vbInformation, "Mensaje"
End Sub
✅ Este código muestra un mensaje cada vez que el usuario abre el archivo.
📢 Regla: Usa Workbook_Open
para ejecutar código al abrir un archivo.
4️⃣ Ejemplo de evento: Detectar cambios en una celda
El evento Worksheet_Change se activa cuando el usuario modifica una celda.
📌 Ejemplo: Mostrar un mensaje cuando cambia A1
vbaCopiarEditarPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
MsgBox "Has cambiado la celda A1"
End If
End Sub
✅ Este código detecta cambios en A1 y muestra un mensaje.
📢 Regla: Usa Worksheet_Change
para ejecutar código cuando cambia el contenido de una celda.
5️⃣ Ejemplo de evento: Detectar selección de una celda
El evento Worksheet_SelectionChange se activa cuando el usuario selecciona una celda.
📌 Ejemplo: Resaltar en amarillo la celda seleccionada
vbaCopiarEditarPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Interior.Color = RGB(255, 255, 0) ' Amarillo
End Sub
✅ Este código cambia el color de fondo de la celda seleccionada.
📢 Regla: Usa Worksheet_SelectionChange
para realizar acciones cuando el usuario cambia de celda.
6️⃣ Comparación de eventos comunes
Evento | Cuándo se ejecuta | Dónde se escribe |
---|---|---|
Workbook_Open | Al abrir el archivo | ThisWorkbook |
Workbook_BeforeClose | Antes de cerrar el archivo | ThisWorkbook |
Worksheet_Change | Cuando cambia una celda | SheetX (NombreHoja) |
Worksheet_SelectionChange | Cuando el usuario selecciona una celda | SheetX (NombreHoja) |
📢 Reglas prácticas:
- Usa
Workbook_Open
para macros que deben ejecutarse al abrir el archivo. - Usa
Worksheet_Change
si necesitas detectar cambios en celdas. - Usa
Worksheet_SelectionChange
para realizar acciones cuando el usuario selecciona celdas.
Conclusión
🔹 Los eventos en VBA permiten ejecutar código automáticamente sin intervención manual.
🔹 Se escriben dentro de SheetX
(para hojas) o ThisWorkbook
(para todo el libro).
🔹 Eventos como Workbook_Open
y Worksheet_Change
ayudan a automatizar tareas.
🔹 Usar eventos correctamente mejora la interactividad y eficiencia de Excel.
En la próxima lección, aprenderemos sobre eventos específicos de hojas y libros, como Workbook_BeforeClose y Worksheet_BeforeDoubleClick.
🚀 ¡Sigamos avanzando!