Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Detectar cambio de valor en celda con macros en excel

| 2 comentarios

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".

Ver código

2) Abriendo el editor de VBA y dentro del Explorador de proyectos haciendo doble clic sobre el nombre de la hoja.

Explorador de proyectos

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).

Código Worksheet

(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:

Código Target

(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:

Mensaje

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.

Ejemplo parte 1

(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:

Ejemplo parte 2

(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.

Detectar cambio de celda en excel

2 comentarios

  1. BLog muy completo y muy detallado es mas de que esperaba gracias por toda esta informacion

    Saludos

  2. Por fin!! ya comprendí el evento Change.

    Mil gracias!! 🙂

Deja una respuesta

Los campos requeridos estan marcados con *.