Evitar parpadeo en excel

Esta mañana me ha escrito un amiguete preguntándome si existe alguna manera para evitar que se vea lo que se está haciendo en Excel mientras una macro está corriendo, es decir, evitar parpadeo en excel. Ése parpadeo molesto que hace que te vuelvas un poco loco o pienses que el que se ha vuelto loco es el ordenador.

Este parpadeo tiene su lógica. Excel, mediante la macro, está haciendo exactamente lo que se le ha indicado. Esto significa que si cambias de hoja, excel cambie también de hoja y si vas escribiendo valores o creándolos a lo largo de la hoja, esto también se verá.

En gran medida, el arte es hacer  todo esto de manera que no se note y para eso hay una pequeña sentencia (frase en el código) que evita este parpadeo. Esta frase es la siguiente:

Application.ScreenUpdating = False

Ejemplos para evitar parpadeo en excel

En la siguiente macro no hemos añadido la frase mágica y por lo tanto, si la probáis, veréis como Excel hará exactamente lo que le habéis dicho y por lo tanto da la sensación de que parpadea.

Sub PARPADEO()

For i = 1 To 10
Sheets.Add after:=Sheets(Sheets.Count)
For j = 1 To 100
Cells(i, 1) = i
Next
Next

Sheets(1).Activate

End Sub

En la siguiente macro sí que hemos añadido nuestra frase mágica de Application.ScreenUpdating = False mediante la cual conseguiremos evitar el parpadeo de la imagen y simplemente ejecutará todo el código como “oculto”. 

Sub SIN_PARPADEO()

Application.ScreenUpdating = False

For i = 1 To 10
Sheets.Add after:=Sheets(Sheets.Count)

For j = 1 To 100
Cells(i, 1) = i
Next
Next

Sheets(1).Activate

End Sub

Esto no significa que podamos realizar otra tarea en Excel mientras se ejecuta la macro pero sí que evitaremos el molesto parpadeo.

Además, esta secuencia tiene un efecto secundario super útil que es la reducción del tiempo que tarda en ejecutarse la macro.

Si quieres realizar una prueba de lo que tardaría puedes utilizar este pedacito de código:

Sub MEDIR_TIEMPO()

T = Timer

Call Nombre_macro

MsgBox Round(Timer - T, 4) & " segundos"

End Sub

En mi ordenador, yo he realizado la prueba, y los tiempos obtenidos son uno el doble que el otro. Es decir, evitar parpadeo en Exel es una buena práctica que no cuesta nada y produce grandes beneficios.

Autor: Quique Arranz

Quique es un fanático del Excel desde que empezó a trabajar con ello hace unos pocos años. Adquirió su conocimiento a través de Google y de infinitas pruebas y más pruebas. Además, Quique es un entusiasta de su familia (mujer e hijos), del deporte y de la cerveza... no dudes en contactar con él para cualquier duda que tengas.

16 opiniones en “Evitar parpadeo en excel”

  1. Buen, antes que nada, GRACIAS por tu aporte, la verdad a mi no me funciono, si pudieras poner otro ejemplo te lo agradecería, quisas a este ejemplo no lo entendí , lo prove en varios archivos que tengo y en ninguno me funciono

    1. Hola Abraham, la técnica consiste en evitar que Excel refresque/actualice la ventana cada vez que modifica o añade información. Para ello, basta con incluir la sentencia Application.ScreenUpdating = False al principio de la macro (si quieres en la línea siguiente a Sub NombreMacro()). No hay que olvidarse de incluir Application.ScreenUpdating = True al final de la macro, en la línea anterior a End Sub. Funciona siempre. Saludos,

      1. Quizas la palabra GRACIAS no es suficiente para agardecerte, te pero, deverdad GRACIAS, Ahora si me funciono bien.

        Sigue adelante, para nosotros que conocemos muy poco de excel tu aporte es de mucha importancia, felicidades por tus aportes, nuevamente gracias

    1. Hola José Luis,

      Esto se usa cuando estás haciendo un bucle con una macro un poco pesado (por ejemplo copiar en una hoja y pegar en otra) o abrir y cerrar un libro de Excel… esto hace que la pantalla parpadee al cambiar de libro o de hoja. Para evitar este parpadeo se usa la sentencia Application.Screenupdating = False.

      Saludos,

      Quique

  2. Buenas Quique! Enhorabuena de nuevo por tu blog! Está super bien redactado, como imágenes muy didácticas y con mucha (y sobretodo ordenada) información de VBA.

    Te escribo para proponerte un post que se me ha ocurrido leyendo este post tuyo (lo mismo ya lo has escrito y aún no he llegado. De lo que estoy seguro es de que sabes hacerlo, porque se nota que te gusta que las cosas queden bien):

    Yo se hacerlo en MATLAB, pero no en Excel. Ya que se puede evitar el parpadeo pero no se puede utilizar Excel mientras se ejecuta la macro, lo suyo sería que apareciera un barra cargadora que indique como va avanzando el proceso y cuanto le queda para terminar. En MATLAB se puede poner de título hasta el tiempo que queda para finalizar la ejecución.

Comentarios cerrados.