A través del evento Worksheet_Change en VBA, podemos detectar el cambio en una celda de Excel; es decir, que si hay alguna modificación dentro de alguna celda, automáticamente aparecerá un mensaje indicando que dicha celda se cambió.
Accediendo el evento Worksheet_Change
Para acceder a este evento existen 2 formas de hacerlo:
1) Haciendo clic derecho en el nombre de la hoja de Excel y seleccionando la opción "Ver código".
2) Abriendo el editor de VBA y dentro del Explorador de proyectos haciendo doble clic sobre el nombre de la hoja.
En este segundo caso, posteriormente debemos seleccionar de las listas desplegables las opciones Worksheet (en la primera lista) y la opción Change (en la segunda lista).
(Para mayor visualización de la imagen, hacer click en la misma)
El Editor de VBA desplegará el código respectivo para el evento Worksheet_Change y podremos escribir nuestro código dentro de la subrutina provista.
El argumento Target del evento Worksheet_Change
Nuestro evento tiene definido un argumento llamado Target el cual contendrá la celda que ha sido modificada. Para mostrar el valor de dicho argumento podemos utilizar siguiente código:
(Para mayor visualización de la imagen, hacer click en la misma)
Cada vez que realices una modificación a una celda y pulses la tecla Entrar se mostrará el mensaje siguiente:
Cómo detectar el cambio en una celda de Excel
A continuación haremos dos ejemplos donde aprenderemos cómo detectar el cambio en una celda de Excel utilizando el evento Worksheet_Change en VBA. El primer ejemplo me permitirá proteger el contenido de la celda A1 de manera que si detecto cualquier cambio en la celda volveré a colocar el número 3.141592654 el cual es su valor original.
(Para mayor visualización de la imagen, hacer click en la misma)
De esta manera la celda A1 siempre tendrá el valor numérico 3.141592654 sin importar las veces que intente modificar su valor. La clave en este código es comparar la propiedad Address para saber si efectivamente se trata de la celda A1 y en caso de ser verdadero asignar el valor a Target.
El segundo ejemplo que mostraré nos ayuda a detectar el cambio en un rango de celdas. Supongamos que en el rango A1:A10 quiero monitorear el valor introducido en cada celda y colocar el número de la vocal que se ha introducido. De esta manera, si se introduce la letra A se remplazará por el valor 1. Si se introduce la letra E se remplazará por el valor 2 y así sucesivamente. El código para lograr este comportamiento en la hoja es el siguiente:
(Para mayor visualización de la imagen, hacer click en la misma)
La función Intersect nos ayuda a saber si existe alguna coincidencia entre el valor de Target y el rango A1:A10 en cuyo caso se evaluará el valor de Target para saber si es una vocal y entonces hacer el remplazo necesario.
10/07/2014 a las 12:05 am
BLog muy completo y muy detallado es mas de que esperaba gracias por toda esta informacion
Saludos
08/04/2015 a las 6:28 am
Por fin!! ya comprendí el evento Change.
Mil gracias!! 🙂