Ir al contenido principal

detectar cambios realizados en una celda

Un lector del blog, al cual le agradezco su entrada, me realiza la siguiente consulta: si el usuario realiza algún cambio en una celda cualquiera de la hoja, el necesita saber en que fila de la planilla de cálculos se encuentra dicha celda, para seleccionarla completamente.
Con funciones resulta imposible alterar la estructura de una hoja, por ende seleccionar, eliminar, agregar, etc, filas, así que no nos queda otra opción que recurrir a las macros.
En realidad estamos ante una tarea que VBA ya tiene prevista e incorpora dentro de los eventos de cada hoja:
Change (Cambio). Nos vamos al editor de Visual Basic (Alt + F11) y desde el Explorador de proyectos hacemos doble click sobre el nodo de alguna Hoja, y seleccionamos segun muestra la siguiente imagen:

Comentarios

  1. Me re sirvió tu ejemplo!!! GRACIAS!! Pero tengo un problemita, hice una Macro que copia y pega en otra hoja todo un rango de una fila (ejemplo: desde A12 hasta A112).
    Entonces cuando uso la rutina que dejaste en el ejemplo, este toma como que cambió todo el Rango A12 - A112 !!
    Yo lo que quería lograr era que me copie y pegue el cambio en otra hoja donde llevo el registro de los cambios realizados.
    Pero la rutina "change" hace que seleccione TODO el rango...
    Como puedo hacer para que verifique fila por fila si algo cambió y entonces me copie y pegue esa fila en otra hoja para llevar un registro?
    Estoy haciendo un control de stock.
    Muchas Gracias

    ResponderEliminar
  2. Hola estimado. Vos sabes que no entiendo muy bien tu consulta. Hiciste una macro que pega en otra hoja todo un rango... y mas abajo me pones "pero la rutina change hace que se seleccione TODO el rango". No comprendo.
    Explicame un poco mas detalladamente el tema y veo como puedo ayudarte.

    ResponderEliminar
  3. buen dia

    hola mi pregunta es si en determinada celda tengo la siguiente formula =SI(I30=F3;"TIENE MÁS PAGOS EN EL MES";"") me arroje un mensaje igual en el momento que se cumpla esa condición, que lo arroje automáticamente sin pararse en la celda. por favor si me puedes colaborar. gracias

    ResponderEliminar
  4. Podrías colocar la condicion en el evento Worksheet_SelectionChange:
    if I30=F3 then
    msgbox "tiene mas pagos en el mes"
    end if
    Debería funcionar sin problemas. El evento "selection change" se dispara cada vez que se cambia la selección de un rango/celda; ahí lo aprovecharíamos para analizar si los valores son iguales... de ser así, un mensaje alerta. ¿Te sirve?

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

funciones: convertir numeros a letras con excel

En realidad hace tiempo que vienen consultándome sobre esto... quizás cinco o seis años . Debe ser una de las funciones mas buscadas de Excel, por lejos: la posibilidad de escribir: 1.534,63 y que en una celda aparezca magicamente "un mil quinientos treinta y cuatro c/15/100". Aquí les dejo una solución, basada en funciones , sin utilizar macros, la cual preparé exclusivamente para este Blog. A pesar de los millones de usuarios que requieren esta herramienta, no viene incorporada en Excel, debemos armarla nosotros mismos .  Luego de la imagen irá la explicación de como llegué a lograr esto, dado que es un proceso medianamente complejo , que utiliza tres o cuatro funciones básicas y requiere de varios pasos. así quedará nuestra planilla y siempre devolverá en letras el valor que ingresemos en A1 [+/-] Ver el resto / Ocultar Desde ya aclaro: esta no es " la forma " de hacerlo, simplemente es una mas, evitando el uso de macros. Sobre esta base, comencemos: 1) El núme

macros: como enviar mails desde Excel (vba)

Un gran amigo "on-line", Johan Moreno, de Colombia , me hizo llegar la inquietud de cómo enviar mails desde Excel . Si bien contaba con algunas líneas de código sobre el particular, decidí retomar mi ejemplo y adaptarlo mejor a las circunstancias. Hace unos minutos termino de remitirle un correo con la solución a Johan... desde Excel y con un archivo adjunto, mismo que transcribo a continuación para ayudar a todos con esta tarea. Veamos primero las dos formas principales de enviar mails: mediante Outlook o nuestro Web Mail ( yahoo, gmail, hotmail, etc, etc ) No soy usuario de Outlook en lo absoluto: no confío en los agujeros de seguridad que continuamente aparecen y, por otro lado, t eniendo a mi alcance una herramienta tan poderosa (y gratuita) como Gmail, la cual ahora también permite sincronizar los mensaje con la Pc para verlos offline (deben activarlo en "google labs") ... no creo que me haga usuario ni hoy ni mañana. Igualmente mas adelante daré una solució

buscarv con varios resultados

Es de las preguntas mas recurrentes que he tenido: ¿se puede lograr que la función BUSCARV() devuelva varios resultados? Si recordamos el uso de esta función, sabremos que la misma buscar en valor en el rango especificado, retornando un solo resultado. Si en la tabla tenermos varios registros iguales BUSCARV() solo nos devolverá el primero de ellos, omitiendo el resto. Entonces ¿se puede? Bueno, aplicando otra técnica sencilla que se me ocurrió al intentar solucionar el planteamiento de un lector... si, puedo hacerlo.... pero sin usar BUSCARV(). la idea es que coloquemos en E1 el código del producto a buscar y a partir de E2 nos devuelva todas las coincidencias de la tabla. [+/-] Ver el resto / Ocultar Vamos a necesitar una columna "auxiliar" para llevar a buen término este proyecto. Con macros el tema sería mas sencillo, pero aquí la cuestión es resolverlo con las funciones de Excel, sin VBA. Paso a paso: Como primer medida chequeamos que valores de la columna A coincide co