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 SubComprobamos 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 SubAl 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.