Dentro de VBA podemos escribir macros que accionaremos mediante un botón u otra macro y también podemos describir ciertas acciones automáticas que se ejecutaran en algunas circunstancias. Esta automatización de Excel mediante código son los eventos en VBA.
Un evento no es nada más que un pedacito de código que actúa cuando el usuario ha introducido ciertos parámetros que el sistema reconoce y normalmente están relacionados con los objetos de Excel (celdas, rangos, hojas, libros…).
Ejemplos
Estos pedacitos de código puede hacer casi cualquier acción. Por ejemplo, yo tengo un libro de Excel con contraseñas para cada día de la semana. Como soy un poco vago decidí crear un evento que automáticamente cuando abra el libro me diga la contraseña que cada día tengo que utilizar y me la ponga en una celda en concreto. De esta manera, sólo tengo que abrir el libro y copiar el valor de la celda (no gasto mi memoria en recordarla ni en buscarla).
Otro ejemplo que uso es un libro de Excel que cuando doy al botón de guardar me lleva a una página en concreto para que así siempre se abra en la misma celda y en la misma hoja.
En otro Excel lo que siempre hago es que cada vez que lo cierro pone el zoom en todas las hojas al 100% y en la celda A1 de cada hoja.
Bien, estos son sólo unos pocos ejemplos pero hay muchos otros que pueden resultar muy interesantes…
¿Cómo crear los eventos en VBA?
Dependerá del tipo de objeto sobre el que quieras actuar. Vamos a ver un ejemplo que siempre es más claro así.
Nuestro objetivo será crear un libro de Excel que cada vez que abramos nos de los buenos días. Para ello usaremos la sentencia de VBA:
Msgbox "Buenos días Quique"
Para insertar este evento en VBA vamos a la ventana de VBA haciendo Alt + F11 (por ejemplo). Hacemos click en el libro de VBA en la pestaña de “ThisWorkbook” o libro en nuestro proyecto como vemos en la imagen:
Una vez que hemos entrado en el módulo del libro seleccionamos la opción de Workbook donde pone: “(General)” como vemos en la siguiente imagen:
Automáticamente, para el evento de tipo Open se creará la siguiente subrutina y nos lo indicará donde antes ponía “(Declarations)” (ver imagen anterior).
Private Sub Workbook_Open()
End Sub
Dentro de esta Subrutina insertaremos nuestro código, el que hayamos creado nosotros o el que crearemos. Esta acción será la que ocurra siempre que abramos nuestro libro. Como habíamos dicho anteriormente, queremos que el libro nos diga “Buenos días”.
Combinando ambos pedacitos de código obtendremos la siguiente macro:
Private Sub Workbook_Open()
MsgBox "Buenos días Quique"
End Sub
Finalmente tendremos que guardar el libro como .xlsm o lo que es lo mismo, c0mo libro habilitado para macros.