Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Evitar parpadeo en Excel (VBA)

| 6 comentarios

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

Evitar Parpadeo Excel VBA 

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

Evitar Parpadeo Excel VBA

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

 

6 comentarios

  1. 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.

  2. Excelente como siempre, gracias por la información.

  3. 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.

  4. Excelente. Anduvo a la Perfección.

  5. por favor evitar el parpadeo de pantalla y vision doble

  6. 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.

Deja una respuesta

Los campos requeridos estan marcados con *.