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:

EventoCuándo ocurre
Workbook_OpenAl abrir un archivo de Excel
Workbook_BeforeCloseAntes de cerrar un archivo
Worksheet_ChangeCuando cambia el valor de una celda
Worksheet_SelectionChangeCuando el usuario selecciona una celda
Workbook_SheetActivateCuando 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

EventoCuándo se ejecutaDónde se escribe
Workbook_OpenAl abrir el archivoThisWorkbook
Workbook_BeforeCloseAntes de cerrar el archivoThisWorkbook
Worksheet_ChangeCuando cambia una celdaSheetX (NombreHoja)
Worksheet_SelectionChangeCuando el usuario selecciona una celdaSheetX (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!