Libro con macros que se aplican pero me bloquean el excel

Tengo un libro (http://db.tt/wLFxLzM9 Dropbox) que simula un "cuadro de iluminación" de un parking. Desde las hojas "cuadro ZR y ZP", a través de macros en los interruptores, rellena (enciende) una serie de rangos (lineas de fluorescentes) en las "hojas ZR1, ZR2, ZR3, ZP1 y ZP2" que simulan las plantas del parking. También hay una serie de sensores de paso (células) en cada planta que "encienden" sus lineas correspondientes con macros.

Al tema, el problema que tengo es que al aplicar las macros de los cuadros (interruptores) en algunas hojas (en ZR1 siempre funciónan), estas se ejecutan y aplican, pero el libro se bloquea y se reinicia el excel. He ejecutado todas las macros del libro en VBA, hay unas cuantas, y de esta manera funcionan de maravilla sin dar ningún error. No consigo dar con el problema que produce el bloqueo y empiezo a estar muy desesperado, me ha llevado muchísimas horas hacer todo el trabajo y ahora me encuentro con este problema que no puedo solucionar.

Por descartar problemas he copiado, ya no se cuantas veces las hojas y macros en otros libros nuevos y nada. He configurado de diferentes maneras las hojas, nada.

El fallo siempre ocurre al aplicar las macros de las hojas (cuadros) a otras hojas (plantas), en cambio las macros de las células que se aplican en las mismas hojas nunca fallan.

He conseguido algunas veces que funcionen todas las macros, pero al cabo de un rato o a veces al abrir el libro que funcionaba, me vuelve a ocurrir el reinicio.

Probarlo a ver si es un problema de mi Excel o del PC y solo me pasa a mi.

Por favor que alguien me eche una mano a ver si encuentra el dichoso problema que me esta ocurriendo.

1 respuesta

Respuesta
1

Estoy mirando tu libro y no veo ninguna instrucción aque 'pare' el reloj (o los relojes que son muchos),.

En algún momento debes indicarle esto. Aquí te dejo un ejemplo de la instrucción que necesitas:

Sub parar()
On Error Resume Next
Application.OnTime valor, "macro", , False

End Sub

Valor: son tus tiempos

'macro' debe ser el nombre de tu macro

False para que lo detenga

PD) Tené presente que si se vá a detener dentro de 7 segundos no puedes cerrar el libro antes... fijate en qué momento lo puedes ejecutar por cada una de las rutinas o 'macro'.

Muchas gracias por interesarte Elsa
¿Si no te he entendido mal, me comentas que el problema que tengo es que las macros al ejecutarlas siguen corriendo y me "saturan" el libro? ¿Es eso.?
Las macros de las células o "relojes", supongo que te refieres a esto, funcionan llenando los rangos con color y a los 7 segundos invocan a la macro "limpiar" que borra o quita el color. ¿Me falta finalizar algo? ¿Como? ¿donde pongo tu instrucción? Con estas macros no he tenido ningún problema, que yo crea, funcionan de maravilla como yo quiero, pero es la primera vez que trabajo con macros.
¿Te ha pasado el mismo error que comento en la pregunta o otro? O te funciona bien.
Las macros que me producen el fallo son las relativas a los módulos 2 (ZR2), 9 (ZR3), 3 (ZP1) y 4 (ZP2) que son unas copias adaptadas del modulo 1 (ZR1) que NUNCA me han fallado, siempre
funcionan.
Yo creo que el problema es de las hojas,que estén corruptas, siempre he hecho una copia de la primera que hice, ya que lo que me interesan son los rangos creados en ellas. Las hojas están comprimidas para que se vea en una pagina,¿ no sera ese el problema? Yo he hecho una hoja sin comprimir a una pagina y también da el fallo,pero sigue siendo una copia expandida y reduciendo las celdas.
Gracias por todo haber si me sacas de dudas y perdona por el tostón.

Casi no lo pude probar xq me empieza a dar error de recursos insuficientes.

Pero con seguridad ese es el motivo: no estás cancelando el evento Ontime, cada 7 segundos se ejecutan TODOS los invocados. No le busques otra razón.

Incluso me ha pasado con otros libros, de que los cierro y si estoy con algún excel abierto, se vuelve a abrir el libro para volver a ejecutarse... es una herramientas difícil de controlar.

En este momento no lo tengo a tu libro, pero si solo necesitas que a los 7 segundos se 'borre el color', y no se vuelva a colorear ... en esas rutinas de limpieza tenés que colocar, antes del end, las instrucciones en False.

Si necesitas que se muestre como un parpadeo, mostrando y quitando color, quizás lo debas colocar en el evento Deactivate de la hoja... o algún otro que ya sabrás cual.

Hola Elsa gracias por contéstar

supongo que tendría que quedar asi la instrucción si lo he entendido bien:

Sub Celula0()

' Celula0 Pasillo

Range("Pasillo").Interior.ColorIndex = 6

Range("BA62").Select

Application.OnTime Now + TimeSerial(0, 0, 7), "limpiar0", , True

End Sub

Sub limpiar0()

Sheets("ZR1").Range("Pasillo").Interior.ColorIndex = 0

On Error Resume Next

Application.OnTime0 , 0, 7, "Celula0", , False

End Sub

Una cosa que no entiendo es, que al abrir el libro y sin aplicar ninguna macro de los relojes(células), y ejecutar por primera vez una macro del cuadro, que no usan la instrucción OnTime, también se bloquea, ¿En ese momento también están corriendo los eventos OnTime?, creo que solo si se ejecutan pasaría lo que comentas, en cambio las macros del Modulo 1 que pertenecen o relacionan con la hoja ZR1 (son las de los interruptores del cuadro ZR que pone 1ª planta, en verde) nunca producen el fallo, podrías estar ejecutándolas todo el dia junto con las macros de las células y sin ningún problema, lo he probado. Es ejecutar cualquier otra macro del cuadro y zas colgado.

Hoy he probado una cosa que se me ha ocurrido y !sorpresa¡. He aplicado todas las macros del Modulo 2 "hoja ZR2" (2ª planta cuadro ZR, en naranja), que siempre me producen el reinicio, lanzarlas desde la misma hoja ZR2 donde se aplican (asignándolas a un botón de las células, es una autoforma) y no desde la hoja del cuadro ZR y !voila¡, funcionan perfectamente sin ocurrir el error, las pruebo una cuantas veces, todo esto ejecutando también las células (tal como las tenia) para ver que pasa y perfecto, le doy a una de esas mismas macros desde el cuadro ZR y fallo.....reiniciando. Vuelvo a abrir el libro hago lo mismo, pero esta vez desde el botón creado en ZR2 lanzo macros que se aplican en ZP1, ZP2 y las demás hojas, sin producirse el fallo, todo esto ejecutando también las macros de las células. Corto el botón, lo pego en otra hoja ZP2 y repito la misma operación sin fallos. Vuelvo a hacer lo mismo en todas las hojas de las plantas ZR 1, 2 y 3 y ZP 1 y 2 sin producirse ningún reinicio. Pego el mismo botón en las hojas de los cuadros ZR y ZP repito el proceso y a la primera el dichoso fallo de nuevo, incluso en la hoja ZR1 que nunca fallaba.

Creo que acabo de descubrir el problema, parece , no se el porque, que el fallo ocurre con las macros lanzadas desde las hojas de los cuadro, menos en la primera pagina (ZR), de las tres que hay (curioso no). Si uso el botón anterior o ejecuto macros en los interruptores desde la primera pagina de la hoja Cuadro ZR no hay ningún problema, si hago lo mismo en cualquier otra pagina de ZR y ZP tenemos el error. PRUÉBALO a ver si estoy en lo cierto y no era el problema que tu me comentabas, o eso es aparte y lo sigo necesitando por los recursos o para finalizar las macros.

No se si con todo esto que he hecho te puede orientar sobre lo que me pasa. Ya es como una obsesión.

MUCHÍSIMAS GRACIAS por aguantarme, empiezo a ver la luz al final del túnel, solo me falta saber el porque ocurre esto en esas paginas y como solucionarlo o lo que he hecho mal.

Saludos

Sysko

Te respondo al código:

La macro llamada en el OnTime es 'limpiar0', por lo tanto la que se tiene que detener es ésta, y te quedaría así (los tiempos siempre tienen que ser los mismos)

Sub limpiar0()
Sheets("ZR1").Range("Pasillo").Interior.ColorIndex = 0
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 7), "limpiar0", , False
End Sub

Como te comenté antes, no probé el libro, ya con solo observar que faltaba detener el evento me quedé ahí. Veré si mañana lo descargo nuevamente para revisar lo que me comentas ahora.

Teneme algo de paciencia que no es poco lo que hay que mirar...

Sdos

Elsa

Hola Elsa:

Para que no te marees mirando el libro he encontrado el problema, y asi poder ir al grano.

Como te comente ayer el error se produce al lanzar la rutina desde cualquier pagina de la hoja "Cuadro ZR" que no sea la primera, comprobado. ¿Hay algún tipo de restricción para lo que comento, entre las paginas de la misma hoja? me imagino que no, pero a mi me ocurre. He abierto una hoja nueva dentro del libro, he pegado solo la misma imagen, en la primera pagina (en modo de diseño de pagina), otra en la segunda de la derecha y otra en la pagina de abajo. Les he asignado la misma rutina a las tres, he ejecutado unas cuantas veces la de la primera pagina y perfecto, ejecuto las otras dos y a la primera..........reiiiniciaaaando. Muuuuuuy raro no, igual si que hay alguna restricción al menos en mi PC, sera Will Gates que me quiere fastidiar. Bueno en serio esta claro que ese es el problema, pruébalo si quieres en mi libro porque estoy seguro que eso no es normal y en otro libro no ocurriría.Creo.

Una duda sobre "On Time false" que me anda dando vueltas por la cabeza, sin haber puesto la instrucción "false" en la macro, si yo lanzo la rutina de las "células" una vez que a los 7 seg. hace la "limpieza" y yo después relleno en color manualmente los rangos, ¿no deberían volver a los 7 seg. a "limpiarse"? porque esto no me ocurre, no se "limpian", o ¿es que la rutina corre en segundo plano? ahora comprendo porque me pusiste en otro post lo de la intermitencia de los rangos.

Sin mas espero haberte ahorrado trabajo en mirar el libro, el fallo es ese segurísimo, ahora bien no tengo ni la mas remota idea de porque me ocurre.

NOTA: se me había olvidado, he hecho una hoja para cada pagina del "Cuadro ZR", en vez de una hoja, tres y funcionan las rutinas en todas perfecto sin reinicios, pero no me sirve esta solucion, ya que en cada pagina del cuadro, hay interruptores mezclados de diferentes hojas de las plantas, bueno un follon para lo que necesito, no es lo mismo tener un solo vinculo al cuadro en las tres "hojas ZR1,2 y 3", que tener tres hojas donde se mezcla todo y encima, hay dos hojas de cuadros, ZR y ZP. No se puede tener todo en la vida, sino no ya no seria vida.

Bueno muchas gracias por se tan amable.

Saludos

Sysko

Hola

Solo enviar el correo yo mismo me he respondido, al releerlo he encontrado la solución y ha sido lo único que no había probado, he puesto en el otro mail " que el libro lo tenia en la pestaña vista (en modo de diseño de pagina), he colocado todas las hojas en modo "normal" y VOILA funciona absolutamente todo sin fallos. Vaya tela, todo por esa sola tontería, no entiendo nada, ¿es normal esto?, llevo tres semanas dándole vueltas al dichoso problema. Lo he probado en todas las copias que llevo hechas y funcionando.

Gracias y aclarame por favor lo de la instrucción "On Time" que te he comentado y finalizo.

Saludos

Bueno Elsa, ya he solucionado el problema que tenia. A quien le pueda interesar.

SOLUCIÓN QUE HE NECESITADO YO: si en la pestaña Vista / Vistas del Libro esta seleccionado en Diseño de Pagina las macros SOLO se pueden ejecutar en la primera página de la hoja seleccionada, si se ejecutan desde cualquier otra pagina, da error y se reinicia el Excel. Hay que seleccionar modoNormaly sin problemas.

No se si esto es normal en Excel o si solo me ocurre a mi.

Muchísimas gracias por perder el tiempo conmigo y por tu ayuda incondicional, gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas