Introducción a los Eventos VBA
Articulo tomado de Gerencie.com
Vamos a empezar esta serie de artículos
con el tema de Macros donde veremos la aplicación de 30 de ellas las cuales nos
pueden servir para contar con archivos deExcel más adaptado a nuestras necesidades.
En esta primera entrega vamos a ver el
concepto Eventos VBA para entender mejor la aplicación de las macros que
veremos en este capítulo.
Para poder aplicar macros, es necesario
tener configurado Excel para que pueda ejecutar Macros y para ellos nos
dirigimos a las opciones de Excel (Archivo, Opciones), luego nos ubicamos en la
última opción de la ventana de opción llamada Centro de Confianza y luego damos
clic en el botón Configuración del Centro de confianza:
Con esto se abre la ventana del Centro de Confianza donde nos debemos ubicar en la opción Configuración de macros y en este ítem debemos seleccionar de las opciones que aparecen en la parte derecha de esta ventana la opción Habilitar todas las macros y habilitar la casilla que dice Confiar en el acceso al modelo de objetos de proyectos de VBA:
Con esto se abre la ventana del Centro de Confianza donde nos debemos ubicar en la opción Configuración de macros y en este ítem debemos seleccionar de las opciones que aparecen en la parte derecha de esta ventana la opción Habilitar todas las macros y habilitar la casilla que dice Confiar en el acceso al modelo de objetos de proyectos de VBA:
Luego damos Aceptar hasta quedar ubicados
en la hoja Excel
Ahora ya podemos ejecutar macros de cualquier
libro de Excel que tengamos en nuestro equipo.
Ingresemos ahora al Editor de Visual
Basic, para ello desde el libro Excel utilizaremos la combinación de teclas Alt
+ F11:
Tenemos al lado izquierdo, un panel
izquierdo llamado Ventana de Proyectos donde se muestran todos los libros Excel
que tengamos abiertos en este momento; para este caso tenemos:
1.
VBAProject(FUNCRES.XLAM): hace parte de la aplicación misma de
Excel y no lo vamos a modificar.
1.
VBAProject (Libro1): Corresponde al único libro de trabajo que
tenemos abierto. Podemos ver que de éste se despliega una carpeta que se llama
Microsoft Excel Objetos que nos muestra las hojas que hay en el libro de Excel
que como vemos tiene dos hojas, Hoja1 y Hoja2. También muestra al final un
objeto llamado ThisWorkbook el cual hace referencia a todo el libro de trabajo
Excel.
Nota: En caso de que tengamos más libros
de Excel abiertos, en esta ventana de Proyectos aparecerán cada uno de ellos.
La programación de las macros se hace
sobre las hojas que tengamos en el libro (Ej.: eliminar filas) pero también se
pueden hacer macros para ejecutar código sobre todo el libro de trabajo (Ej.:
Ocultar las fichas de las hojas) y una tercera opción para programar macros
sería sobre unos objetos llamados Módulos que veremos más adelante en otras
entregas.
Así que cuando se requiera realizar una
macro para ejecutar código sobre una hoja lo podemos hacer dando doble clic a
la hoja desde la Ventana de proyectos. Vamos a realizar esto sobre la Hoja1:
Vemos entonces que en la parte derecha del
Editor de Visual Basic, ya aparece un espacio en blanco lo que significa que
está en modo de edición donde ya podemos digitar los códigos que necesitemos
programar y de esta manera, los códigos que ingresemos serán aplicados
directamente sobre la Hoja1.
Encima del espacio en blanco de edición de
macros, tenemos dos listas de opciones:
La primera, donde se muestra entre
paréntesis la palabra General, es donde podemos seleccionar los objetos ActiveX
que tengamos en la hoja (y que ya vimos en las entregas anteriores). Como
es un libro de trabajo nuevo, al desplegar esta opción solo nos aparece el
objeto Worksheet que siempre está por defecto:
Al seleccionar este objeto Worksheet,
aparecerán en el espacio de edición de códigos las líneas de inicio y de fin de
la Macro que se ejecutará al presentarse algún EVENTO en el Libro de Excel
(Worksheet):
La primea línea marca el principio de la
macro y vamos a desglosar esta línea para entender un poco mejor esta macro:
Private Sub: significa Subrutina (Sub) o
macro de acceso Privado (Private) y este acceso se aplica cuando se intenta
ejecutar desde otra macro.
Worsheet: Corresponde a una macro que se
aplicará a la hoja de Excel (Worksheet) sobre la que estemos ubicados desde la
venta de explorador de proyectos
SelectionChange(ByVal Target As Range):
Corresponde al evento Cambio de selección y significa que
los códigos que vayamos a programar en esta macro se ejecutaran automáticamente
al presentarse un cambio en la selección de las celdas (Target) que indiquemos.
Es importante marcar que hay varios
eventos o acciones que se pueden dar en la interacción de las hojas de un libro
de Excel como es Activar, Calcular, Cambiar Selección, entre otras y es
precisamente desde la aplicación de estos eventos que se pueden ejecutar
macros. La configuración de los eventos la podemos realizar desde el segundo
cuadro de opción que tenemos encima del espacio de programación de códigos:
Vemos que tenemos muchos otros eventos que
podemos seleccionar para ejecutar macros de manera automática y dependiendo del
evento seleccionado se podrán ejecutar de una u otra manera. Por ejemplo, si
seleccionamos el evento Activate, la macro que programemos se ejecutara
automáticamente al Activarse la Hoja 1(en este caso que es desde donde estamos
ubicados), por ejemplo, si desde el libro de Excel estamos ubicados en la Hoja
2 y luego damos clic en la pestaña para pasar a la Hoja 1, en ese momento se
ejecutará la macro que programemos en este evento. Hagamos el ejercicio y
seleccionemos el evento Activate:
Vemos que en el espacio de edición de
códigos aparecen la línea de inicio y de fin para el evento Activate de la hoja
que seleccionamos y debajo quedaron las líneas de inicio y de fin del evento
SelectionChange también para la misma hoja pero estas últimas líneas o la
podemos borrar o desde que no agreguemos códigos adicionales las podemos dejar.
Vamos a pegar el siguiente código dentro
de las líneas de inicio y de fin de la macro que se activa con el evento
Activate:
MsgBox "Has seleccionado la Hoja
1"
Esa línea lo que haces mostrar un mensaje
informativo al momento de activarse la Hoja 1. Vamos a Excel y probemos a
cambiar entre las hojas y veremos como se muestra el mensaje al activar o
seleccionar la Hoja 1:
Durante las siguientes entregas, veremos
el uso que podemos dar a distintos eventos que tenemos a disposición en VBA.