Macros en Excel

C贸mo detectar el cambio en una celda de Excel.

Raymundo Ycaza
#Excel Avanzado#Macros (VBA)#Programando#馃 Automatizaci贸n con Excel

Cuando trabajas en tus proyectos de Excel, muchas veces sue帽as con reducir un poco ese tiempo que te gastas haciendo tareas repetitivas. 驴Verdad que s铆?

No es que sean grandes cosas, solo te das cuenta que no tiene sentido estar haciendo la misma cosa, de la misma forma todos los d铆as, cuando podr铆as usar ese tiempo 鈥減erdido鈥 para hacer tu trabajo.

Y una de esas cosas que te gustar铆a hacer, es que tu aplicaci贸n pueda detectar el cambio en una celda de Excel.

Pero 驴c贸mo hacerlo?

驴Macros? 隆Ni idea!

Es sencillo, una vez que te cuentan c贸mo se hace. Sigue leyendo, porque aqu铆 te muestro el c贸digo base, para detectar cuando el usuario realiza un cambio en cualquiera de las celdas de una hoja de c谩lculo.

El evento Worksheet_Change

Tranquilidad. Simplemente cada cosa tiene su nombre y cuando tienen nombres largos, parece m谩s complicado de lo que realmente es.

El evento Worksheet_Change, simplemente es la forma de decir:

Cada vez que "Alguien" cambie algo en la hoja actual, suceder谩 lo que digo a continuaci贸n.

Para trabajar con este evento, s贸lo debes acceder al editor de VBA y dar doble clic sobre el nombre de la hoja donde vas a crear tu c贸digo.

Abriendo el editor de VBA

Si no recuerdas c贸mo ingresar al editor de VBA, lee esto y vuelve enseguida.

驴Todo listo? Bien. Sigamos.

C贸mo detectar el cambio en una celda.

Una vez dentro del objeto hoja, se mostrar谩 la ventana en blanco, tal como te explico en el art铆culo que acabas de leer. En las dos listas que te aparecen,deber谩s elegir las siguientes opciones:

  1. Worksheet, en la primera lista.
  2. Change, en la segunda lista.

Eligiendo el objeto y el evento en Excel VBA.

Al unirse estas dos palabras, forman el evento Worksheet_Change.

La primera lista, hace referencia al objeto sobre el cual debe suceder el evento, mientras que la segunda lista hace referencia al tipo de evento que se dar谩 sobre dicho objeto.

驴Sencillo, verdad?

El argumento target : El secreto de la receta.

Por defecto, es decir, autom谩ticamente, ver谩s que se asigna un argumento o par谩metro llamado 鈥淭arget鈥.

Esto vendr铆a a significar 鈥淥bjetivo鈥. Es decir, cu谩l es la celda objetivo en el cambio que se est谩 dando.

Dicho de otra forma, Excel reconoce autom谩ticamente cu谩l es la celda que cambi贸 y manda su referencia a trav茅s de este argumento.

驴Y c贸mo puedo 鈥渟acar鈥 la direcci贸n que tiene esa referencia?

Con la propiedad 鈥淎ddress鈥.

Trabajando con la propiedad Address

Esta propiedad contiene la direcci贸n del rango contenido en el argumento 鈥淭arget鈥. As铆, para mostrar cu谩l es la referencia de la celda que cambi贸, puedes usar un cuadro de mensaje, as铆:

MsgBox "Alguien cambi贸 lo que hab铆a en la celda: " & Target.Address

siguiendo todos los pasos, tu c贸digo deber铆a quedar, m谩s o menos as铆:

El c贸digo de prueba terminado.

Y en qu茅 ocasiones esto me resultar铆a 煤til?

Bueno, vamos a utilizarlo en ejemplos reales m谩s adelante; pero para que te hagas una idea, te mostrar茅 una forma de evitar que alguien cambie sin querer un valor de una celda.

Por ejemplo, imagina que el porcentaje de comisiones de venta que manejas en tu archivo de control, es de un 12 % y lo colocas en una celda para realizar tus c谩lculos.

驴Qu茅 pasar铆a si por error se altera ese dato?

隆S铆! Eso y mucho m谩s.

Entonces, 驴c贸mo podr铆a evitar que suceda?

Primero, debemos detectar que alguien cambi贸 la celda. Para esto, usar谩s lo que acabas de aprender y 鈥減reguntar谩s鈥 cu谩l es la direcci贸n de la celda que cambi贸, as铆:

Preguntando si el usuario realiz贸 un cambio en las celdas.

Entonces, si es verdad que alguien cambi贸 la celda A1, lo que har谩s ser谩 asignarle el porcentaje correcto, as铆:

Volvemos a colocar el valor origina, como si no hubiera pasado nada.

De este modo, cualquiera que quiera cambiarle o que por error le cambie el valor de esta celda, ver谩 c贸mo retoma el valor original y tus c谩lculos estar谩n siempre a salvo.

隆Muy 煤til! 驴No lo crees?

Ahora ve y pon en pr谩ctica lo aprendido. Incluso si ahora mismo no lo vas a necesitar, es la mejor forma de dejarlo 鈥渁rchivado鈥 en tu memoria.

No dejes de compartir este art铆culo en Facebook o Twitter, usando los botones que encuentras junto al mismo.

隆Nos vemos!

鈫 Regresar al Blog