Al momento de ejecutar una macro, el sistema muestra un resultado al usuario por cada ejecución realizada, esto en reiteradas ocasiones representa un inconveniente, ya que, en el caso de archivos muy pesados con bases de datos extensas, se puede extender el tiempo de la macro a varios minutos, quitándole el sentido de optimización de operaciones y simplificación a la herramienta macros.
Para evitar el parpadeo al momento de ejecutar una macro, se debe configurar las siguientes funciones
Application.ScreenUpdating = False
Evita que la pantalla realice cada operación de las fórmulas de la macro, de modo que no se ejecute hasta que sea especificado.
Application.calculation = xlCalculationManual
Cada vez que se analiza una celda, Excel analiza todas las celdas que existen, por lo que colocarlo en manual evitará que se ejecuten cálculos innecesarios.
Application.EnableEvents = False
Eventos de pantalla ejecutados por macros en la hoja y libro son desactivados.
ActiveSheet.DisplayPageBreaks = False
Saltos de página, que por lo general se producen al compatibilizar diferentes versiones de Excel.
La ejecución de las fórmulas se vería de la siguiente manera:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Para que la macro pueda ejecutarse adecuadamente, es necesario que al final de los enunciados, vuelvan a activarse, de tal manera que se pueda obtener un resultado.
El final del enunciado debe contener la siguiente fórmula:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
La mayoría de estos códigos tienen aplicaciones con mayor relevancia cuando se usan archivos cuyas macros pueden tardar un tiempo considerable como un mecanismo de optimización. Si la macro a ejecutarse tiene un enunciado más simple, herramientas como Application.EnableEvents no tendrán un impacto tan notorio como las otras funciones.
A continuación, se presentan ejemplos aplicando la herramienta en una macro.
Elaborado por: Juan Carlos Correa
04/02/2020 a las 2:19 pm
Hola Juan Carlos. Hace tiempo que aplico los tres primeros consejos, sin embargo, a pesar de desactivar el ScreenUbdating, al final siempre hace un "repintado" de las imágenes (shapes) que es muy molesto aunque sólo lo haga una única vez. Sabes por qué se produce este repintado de imágenes? Es como si al recalcular el espacio ocupado por las celdas, tuviera necesidad de volver a pintar las imágenes... Me gustaría saber si hay forma de evitarlo, porque el ScreenUbdating = False, por sí solo no lo evita.
Gracia. Un saludo.
09/11/2020 a las 2:35 pm
Excelente como siempre, gracias por la información.
13/12/2020 a las 9:23 pm
Exelente! Tengo un Application.ScreenUpdating = True en un Private Sub, y por más que lo siguiera desactivando en la macro, me seguía haciendo pantallazos y además tardaba un poco...pero ahora es casi instantáneo...Muchas gracias.
14/05/2021 a las 10:31 am
Excelente. Anduvo a la Perfección.
12/06/2021 a las 8:48 pm
por favor evitar el parpadeo de pantalla y vision doble
21/07/2022 a las 3:47 pm
Buenas tardes, yo tengo un Libro que saca info de cada una de las hojas, lo que no logro es que me muestre el recorrido que hace, sino que solo me muestr el resultado en la hoja indice.
Atte.