"Cortar" la ejecución de Worksheet_Change

26/02/2007 - 23:24 por Gustavo Echenique | Informe spam
Hola Foro!

Estoy utilizando la función Worksheet_change para detectar, en mi caso, si
se ha modificado una celda de la columna "A", y de ser así, insertar una
consulta SQL a partir de la columna "B".

Funciona bien con los datos de la primera fila, pero inexplicablemente entra
en un bucle infinito, ya que evalúo si la celda modificada pertenece a la
columna "A", como había explicado.

Si intento ingresar un dato en cualquier otra columna, no se ejecuta ninguna
de las funciones programadas (lo cual es lógico y esperable), pero al
insertarse la consulta en forma automática (porque se ingresó un valor en la
columna "A"), toma a la próxima celda de "A" como cambiada, siendo que no
tiene nada.

¿Hay alguna forma de "cortar" este bucle?
Si alguno conoce de alguna otra función que haga esto, le agradecería si me
lo explica.

Saludos!

Gustavo Echenique

Preguntas similare

Leer las respuestas

#1 Abraham
27/02/2007 - 00:06 | Informe spam
coloca esto despues de encabezado (Private sub wor)

Application.enableevents=False

y esto al final, antes del end sub.

Application.enableevents=True

Abraham
Respuesta Responder a este mensaje
#2 Gustavo Echenique
27/02/2007 - 01:57 | Informe spam
Hola Abraham, ante todo muchas gracias por tu atención.

Probé de insertar el código en los lugares indicados, pero sigue igual.
Se ve que al insertar datos con QueryTables(), se genera algún tipo de
código que "no le gusta" a Worksheet_Change

¿Conoces si hay forma de "tirar" el resultado de un QueryTable() a una
matriz para luego insertar manualmente los resultados celda a celda?

Saludos!

Gustavo


"Abraham" escribió en el mensaje
news:
coloca esto despues de encabezado (Private sub wor)

Application.enableevents=False

y esto al final, antes del end sub.

Application.enableevents=True

Abraham

Respuesta Responder a este mensaje
#3 Francisco Parrilla
27/02/2007 - 02:09 | Informe spam
... !!!!

utiliza un contador dentro evento worksheet_change para controlas las
entradas al mismo, te deja en un bucle infinito por que la hoja cambia
constantemente con la introduccion de datos por parte del query.
Saludos


Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice

El verdadero buscador crece y aprende, y descubre que siempre es el
principal responsable de lo que sucede.
Jorge Bucay

La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en alguna
pared, el ignorante permanece tranquilo en el centro de la estancia.
Anatole France
Respuesta Responder a este mensaje
#4 Gustavo Echenique
28/02/2007 - 23:50 | Informe spam
Muchas Gracias a todas las personas que aportaron algo.

Ya solucioné el problema, y fue en base a lo sugerido por Abraham, que me
dijo que pusiera "Application.EnableEvents = False" y luego
"Application.EnableEvents = True". Pero con alguna modificación.

Si los ponía en el cuerpo principal de Worksheet_change, no funcionaba.
Entonces decidí probar de insertarlos en una función que llamo para traer
los datos del motor informix e insertarlos en la hoja de cálculo, y ahí
anduvo perfecto todo.

Apenas entra en la función, deshabilita el manejo de eventos, y cuando
termina de hacer todo, antes de volver, los vuelve a habilitar.

Reitero mi agradecimiento

Gustavo



"Gustavo Echenique" escribió en el mensaje
news:
Hola Foro!

Estoy utilizando la función Worksheet_change para detectar, en mi caso, si
se ha modificado una celda de la columna "A", y de ser así, insertar una
consulta SQL a partir de la columna "B".

Funciona bien con los datos de la primera fila, pero inexplicablemente
entra en un bucle infinito, ya que evalúo si la celda modificada pertenece
a la columna "A", como había explicado.

Si intento ingresar un dato en cualquier otra columna, no se ejecuta
ninguna de las funciones programadas (lo cual es lógico y esperable), pero
al insertarse la consulta en forma automática (porque se ingresó un valor
en la columna "A"), toma a la próxima celda de "A" como cambiada, siendo
que no tiene nada.

¿Hay alguna forma de "cortar" este bucle?
Si alguno conoce de alguna otra función que haga esto, le agradecería si
me lo explica.

Saludos!

Gustavo Echenique


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida