Evento Change no ejecuta con mouse

07/11/2006 - 17:42 por CSICMEL Portales y Páginas Web | Informe spam
Hola Estimados amigos,

Tengo alguna macro en las hojas de la forma

Private Sub Worksheet_Change(ByVal Target As Range)

Call Mi_Macro(Target, ActiveSheet.Name)

End Sub

En Mi Macro hago distintas cosas, según el rango editado.

En general, entra a la macro y pasa por todas las subrutinas que he
definido, pero he notado que cuando hago un cambio en la hoja a mano, es
decir, escribo el valor y presiono Enter, los rangos del tipo:

Range(Rango_a_Procesar).Select

Donde Rango_a_Procesar puede tener por ejemplo= "$C$4:$C$50"

Se activan y se ejecutan correctamente formateando y haciendo las cosas que
yo espero.

Pero si el cambio en la hoja (para gatillar el evento) lo realizo con el
mouse a través del botón de lista de validación que tengo en las hojas,
entonces, la macro se ejecuta y entra por todas las subrutinas, pero los
rango no los "selecciona" y con ello no formatea lo que necesito. Incluso en
las rutinas puse al comienzo:

Worksheets(Nombre_de_Hoja).Activate

.
.
.

Range(Rango_a_Procesar).Select

Al revisar Target, efectivamente, en ambos casos, el contenido de la celda
editada ha cambiado, pero en el caso de haberlo hecho con el mouse y lista de
validación, no se seleccionan los rangos dinámicos que calculo, y sí lo hace
cuando edito la celda a mano, escribiendo y presionando Enter.

Tenía entendido, que el "Worksheet_Change" notaba un cambio en la celda y se
ejecutaba y de hecho entra y se ejecuta el código, pero no cumple las
seleciones de rango y no entiendo porqué si incluso estoy gatillando el
evento desde una hoja activa y más aún , la activo nuevamente en la subrutina.

He aprendido muchas cosas desde aquí y leyendo además la ayuda pero como
verán no soy muy avanzado en algunas cosas y agradezco cualquier ayuda o
comentario.

No incluyo las rutinas porque son varias y largas y de hecho, repito por si
no se entendió, el código funciona bien cuando la celda editada que pertenece
al rango que estoy "vigilando" lo hago con el teclado, pero no se
"selecciona" los rangos si el cambio de valor lo hago a través de la lista de
validación con el mouse.

Muchísimas Gracias por cualquier comentario y ayuda.

Saludos,

Hugo Miguel Angel
Muchísimas Gracias por vuestra ayuda.

CSICMEL Portales y Páginas web
www.assalamo-alaikum.com
www.aquiopinoyo.cl
 

Leer las respuestas

#1 CSICMEL Portales y Páginas Web
07/11/2006 - 18:01 | Informe spam
Estoy revisando unas versiones anteriores y se ejecuta bien, con teclado y
ratón, así que algo cambié yo, que ahora no lo hace, estoy buscando mayor
información, aunque no sé qué provoca el cambio entre un libro y otro. Junto
con otros cambios, ordené las rutinas y funciones en módulos separados y con
nombres para saber que hay adentro, asi que voy a investigar más.

Gracias


Muchísimas Gracias por vuestra ayuda.

CSICMEL Portales y Páginas web
www.assalamo-alaikum.com
www.aquiopinoyo.cl


"CSICMEL Portales y Páginas Web" wrote:

Hola Estimados amigos,

Tengo alguna macro en las hojas de la forma

Private Sub Worksheet_Change(ByVal Target As Range)

Call Mi_Macro(Target, ActiveSheet.Name)

End Sub

En Mi Macro hago distintas cosas, según el rango editado.

En general, entra a la macro y pasa por todas las subrutinas que he
definido, pero he notado que cuando hago un cambio en la hoja a mano, es
decir, escribo el valor y presiono Enter, los rangos del tipo:

Range(Rango_a_Procesar).Select

Donde Rango_a_Procesar puede tener por ejemplo= "$C$4:$C$50"

Se activan y se ejecutan correctamente formateando y haciendo las cosas que
yo espero.

Pero si el cambio en la hoja (para gatillar el evento) lo realizo con el
mouse a través del botón de lista de validación que tengo en las hojas,
entonces, la macro se ejecuta y entra por todas las subrutinas, pero los
rango no los "selecciona" y con ello no formatea lo que necesito. Incluso en
las rutinas puse al comienzo:

Worksheets(Nombre_de_Hoja).Activate

.
.
.

Range(Rango_a_Procesar).Select

Al revisar Target, efectivamente, en ambos casos, el contenido de la celda
editada ha cambiado, pero en el caso de haberlo hecho con el mouse y lista de
validación, no se seleccionan los rangos dinámicos que calculo, y sí lo hace
cuando edito la celda a mano, escribiendo y presionando Enter.

Tenía entendido, que el "Worksheet_Change" notaba un cambio en la celda y se
ejecutaba y de hecho entra y se ejecuta el código, pero no cumple las
seleciones de rango y no entiendo porqué si incluso estoy gatillando el
evento desde una hoja activa y más aún , la activo nuevamente en la subrutina.

He aprendido muchas cosas desde aquí y leyendo además la ayuda pero como
verán no soy muy avanzado en algunas cosas y agradezco cualquier ayuda o
comentario.

No incluyo las rutinas porque son varias y largas y de hecho, repito por si
no se entendió, el código funciona bien cuando la celda editada que pertenece
al rango que estoy "vigilando" lo hago con el teclado, pero no se
"selecciona" los rangos si el cambio de valor lo hago a través de la lista de
validación con el mouse.

Muchísimas Gracias por cualquier comentario y ayuda.

Saludos,

Hugo Miguel Angel
Muchísimas Gracias por vuestra ayuda.

CSICMEL Portales y Páginas web
www.assalamo-alaikum.com
www.aquiopinoyo.cl

Preguntas similares