En ocasiones, al crear nuestros procedimientos recurrentes (ver ejemplo) se genera un efecto muy feo en nuestra hoja de cálculo, mostrando el cursor con el efecto de flash o actualización:
Por ejemplo, el siguiente procedimiento:
Comprobamos como, a pesar de haber aplicado la típica interrupción del refresco de pantalla:
Application.ScreenUpdating = False
el indeseado efecto sigue apareciendo...
Una práctica solución pasa por forzar el cambio a un tipo de cursor en particular, por ejemplo, el clásico de la flecha.
Para ello emplearemos la propiedad
Application.Cursor
que establece el aspecto del puntero del ratón... Que nos ofrece las siguientes opciones:
xlDefault: Puntero predeterminado.
xlIBeam: Puntero en forma de I.
xlNorthwestArrow: Puntero de flecha orientada al noroeste.
xlWait: Puntero de reloj de arena.
Por ejemplo, para nuestro caso cambiaremos el puntero con:
Application.Cursor = xlNorthwestArrow
Tras aplicar un cambio de puntero, es recomendable invertir el cambio y volver al puntero predeterminado:
Application.Cursor = xlDefault
Por otra parte, aplicaremos la función DoEvents que permite la ejecución de nuestros procedimientos, de modo que el sistema operativo pueda procesar otros eventos.
Aplicando lo descrito anteriormente, nuestro procedimiento quedaría (ver filas 4 y 5):
Al ejecutar la macro conseguimos que no se visualice el efecto de refresco... tal como pretendíamos.
Por ejemplo, el siguiente procedimiento:
Sub reloj() Application.ScreenUpdating = False Range("A40").Formula = "=NOW()" Application.ScreenUpdating = True Application.OnTime Now + TimeValue("00:00:01"), "reloj" Application.ScreenUpdating = True End Sub '''''''''''''''''''''''''''''''''' Sub Auto_Open() Call reloj End Sub
Comprobamos como, a pesar de haber aplicado la típica interrupción del refresco de pantalla:
Application.ScreenUpdating = False
el indeseado efecto sigue apareciendo...
Una práctica solución pasa por forzar el cambio a un tipo de cursor en particular, por ejemplo, el clásico de la flecha.
Para ello emplearemos la propiedad
Application.Cursor
que establece el aspecto del puntero del ratón... Que nos ofrece las siguientes opciones:
xlDefault: Puntero predeterminado.
xlIBeam: Puntero en forma de I.
xlNorthwestArrow: Puntero de flecha orientada al noroeste.
xlWait: Puntero de reloj de arena.
Por ejemplo, para nuestro caso cambiaremos el puntero con:
Application.Cursor = xlNorthwestArrow
Tras aplicar un cambio de puntero, es recomendable invertir el cambio y volver al puntero predeterminado:
Application.Cursor = xlDefault
Por otra parte, aplicaremos la función DoEvents que permite la ejecución de nuestros procedimientos, de modo que el sistema operativo pueda procesar otros eventos.
Aplicando lo descrito anteriormente, nuestro procedimiento quedaría (ver filas 4 y 5):
Sub reloj() Application.ScreenUpdating = False Application.Cursor = xlNorthwestArrow DoEvents Range("A40").Formula = "=NOW()" Application.ScreenUpdating = True Application.OnTime Now + TimeValue("00:00:01"), "reloj" Application.ScreenUpdating = True End Sub '''''''''''''''''''''''''''''''''' Sub Auto_Open() Call reloj End Sub
Al ejecutar la macro conseguimos que no se visualice el efecto de refresco... tal como pretendíamos.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.