Impedir que salte "Worksheet_SelectionChange"

06/11/2006 - 13:05 por kusflo | Informe spam
Tengo código en el procedimiento "Worksheet_SelectionChange" y cada vez que
algo cambia en la hoja se ejecuta dicho código. El problema es que si realizo
cambios en la hoja por código este evento también se ejecuta. ¿Es posible que
no se ejecute cuando los cambios en la hoja se realizan a través de código?
"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.

Preguntas similare

Leer las respuestas

#1 Luis Garcia
06/11/2006 - 16:15 | Informe spam
Hola:

Desde codigo, Application.EnableEvents activa/desactiva los eventos de
Excel... pero todos, absolutamente todos. Y has de tener mucho cuidado de
que cuando finalize tu codigo, volver a ponerlo a True.

Otra solucion seria crear una variable Global de tipo Boolean:
EstoyEjecutandoVBA y ponerla a True / False cuando te interese, y en los
eventos que quieras 'evitar', hacer la comprobacion:

If EstoyEjecutandoVBA Then Exit Sub

Espero que te sirva.

Saludos

"kusflo" (donotspam)> escribió en el mensaje
news:
Tengo código en el procedimiento "Worksheet_SelectionChange" y cada vez


que
algo cambia en la hoja se ejecuta dicho código. El problema es que si


realizo
cambios en la hoja por código este evento también se ejecuta. ¿Es posible


que
no se ejecute cuando los cambios en la hoja se realizan a través de


código?
"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.
Respuesta Responder a este mensaje
#2 Héctor Miguel
07/11/2006 - 04:45 | Informe spam
hla, marcos !

Tengo codigo en el procedimiento "Worksheet_SelectionChange"
y cada vez que algo cambia en la hoja se ejecuta dicho codigo.
El problema es que si realizo cambios en la hoja por codigo este evento tambien se ejecuta.
Es posible que no se ejecute cuando los cambios en la hoja se realizan a traves de codigo?



1) el evento que mencionas, se 'dispara' SOLO cuando se realiza un cambio de seleccion [celda o rango de celdas]

2) [probablemente] si tu codigo esta efectuando 'realmente' cambios de seleccion de celdas/rangos...
op1: define una variable 'booleana' [verdadero/falso] que 'tu codigo' establezca como verdadera al iniciar 'sus procesos'
y que la vuelva a poner como falso una vez que se terminen sus 'afectaciones/re-selecciones/...' en las celdas ;)
[obviamente, en el evento deberas 'salir del procedimiento' cuando esta variable este establecida como verdadera]
op2: prueba a evitar que tu codigo 'active' la hoja y realice cambios 'reales' de seleccion de celdas/rangos +/- como sigue:
en lugar de instrucciones del tipo: <hoja>.Activate y luego <rango>.Select ..y luego <rango>.Value = 45
usa un estilo 'directo' [p.e.] -> <hoja>.<rango> = 45

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 L. Garcia
07/11/2006 - 11:06 | Informe spam
Hola:

Desde codigo, Application.EnableEvents activa/desactiva los eventos de
Excel... pero todos, absolutamente todos. Y has de tener mucho cuidado de
que cuando finalize tu codigo, volver a ponerlo a True.

Otra solucion seria crear una variable Global de tipo Boolean:
EstoyEjecutandoVBA y ponerla a True / False cuando te interese, y en los
eventos que quieras 'evitar', hacer la comprobacion:

If EstoyEjecutandoVBA Then Exit Sub

Espero que te sirva.

Saludos

"kusflo" (donotspam)> escribió en el mensaje
news:
Tengo código en el procedimiento "Worksheet_SelectionChange" y cada vez


que
algo cambia en la hoja se ejecuta dicho código. El problema es que si


realizo
cambios en la hoja por código este evento también se ejecuta. ¿Es posible


que
no se ejecute cuando los cambios en la hoja se realizan a través de


código?
"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe; he
aquí el verdadero saber." Confucio.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida