Parpadeo de pantalla en Excel VBA durante una macro: cómo usar screenupdating correctamente
🔍 WiseChecker

Parpadeo de pantalla en Excel VBA durante una macro: cómo usar screenupdating correctamente

Su pantalla de Excel parpadea o destella rápidamente cuando se ejecuta una macro de VBA. Esta distracción visual hace que la macro parezca lenta y poco profesional. La causa es que Excel vuelve a dibujar la pantalla después de cada cambio que realiza su código. Este artículo explica cómo usar la propiedad ScreenUpdating para eliminar el parpadeo y acelerar sus macros.

Puntos clave: Detener el parpadeo de pantalla en VBA

  • Application.ScreenUpdating = False: Desactiva el redibujado de pantalla al inicio de su macro para evitar el parpadeo y mejorar el rendimiento.
  • Application.ScreenUpdating = True: Vuelve a activar las actualizaciones de pantalla al final de su macro para mostrar el resultado final y restaurar la interacción normal con Excel.
  • Manejo de errores con ScreenUpdating: Asegura que las actualizaciones de pantalla se vuelvan a activar siempre, incluso si su macro encuentra un error en tiempo de ejecución y se detiene.

ADVERTISEMENT

Por qué las macros de VBA causan parpadeo de pantalla

Excel está diseñado para mostrarle cada cambio a medida que ocurre. Cuando su código VBA se ejecuta, puede modificar celdas, dar formato a rangos o insertar gráficos. De forma predeterminada, Excel intenta mostrar cada una de estas acciones de inmediato. Esto hace que la aplicación actualice constantemente la ventana, lo que produce un efecto de parpadeo o destello.

La propiedad ScreenUpdating controla este comportamiento. Cuando se establece en True, Excel actualiza la pantalla. Cuando se establece en False, Excel pausa todas las actualizaciones visuales. Esto permite que su código se ejecute en segundo plano. La pantalla permanece estática hasta que vuelva a activar la actualización. Esto no solo detiene el parpadeo, sino que también hace que su macro se ejecute más rápido porque Excel no pierde tiempo dibujando.

Cuándo desactivar ScreenUpdating

Use ScreenUpdating = False para cualquier macro que realice múltiples operaciones. Esto incluye bucles que procesan muchas filas, código que aplica formato a áreas grandes o scripts que mueven datos entre hojas. Para macros muy cortas que cambian solo una celda, el beneficio es mínimo. El objetivo principal es agrupar los cambios visuales.

Pasos para implementar ScreenUpdating en sus macros

El método correcto implica desactivar la propiedad, ejecutar su código principal y luego volver a activarla. También debe incluir manejo de errores para evitar que la propiedad quede desactivada.

  1. Abra el Editor de Visual Basic
    Presione Alt + F11 en su teclado para abrir el entorno de desarrollo de VBA.
  2. Inserte el comando ScreenUpdating
    Al comienzo de su procedimiento de macro, antes de cualquier otro código, escriba Application.ScreenUpdating = False en su propia línea.
  3. Agregue su código principal de macro
    Escriba o pegue el código que realiza sus tareas, como copiar datos o dar formato a celdas, debajo de la línea de ScreenUpdating.
  4. Vuelva a activar la actualización de pantalla
    Al final de su macro, justo antes de la declaración End Sub, escriba Application.ScreenUpdating = True.

Agregar manejo básico de errores

Para que su macro sea robusta, use un manejador de errores simple. Esto asegura que ScreenUpdating se establezca siempre en True, incluso si el código falla.

  1. Configure el manejador de errores
    Después de la línea Application.ScreenUpdating = False, agregue On Error GoTo ErrorHandler.
  2. Etiquete el final de su código principal
    Después de su código principal y antes de la línea Application.ScreenUpdating = True, agregue Exit Sub en su propia línea.
  3. Cree la etiqueta del manejador de errores
    Debajo de la línea Exit Sub, agregue una nueva línea con la etiqueta ErrorHandler:.
  4. Agregue el comando de restablecimiento en el manejador
    En la línea después de la etiqueta, escriba Application.ScreenUpdating = True. Luego agregue MsgBox "An error occurred: " & Err.Description para alertar al usuario.

ADVERTISEMENT

Errores comunes y limitaciones de ScreenUpdating

La macro falla y deja ScreenUpdating desactivado

Si su macro encuentra un error y se detiene sin volver a activar ScreenUpdating, Excel parecerá congelado. No verá ningún cambio que haga manualmente. Para solucionarlo, ejecute una macro simple de una línea desde la ventana Inmediato. Presione Ctrl + G en el Editor de VBA, escriba Application.ScreenUpdating = True y presione Enter.

La pantalla no se actualiza en absoluto después de ejecutar la macro

Esto sucede si olvida establecer ScreenUpdating = True al final de su macro. Verifique los puntos de salida de su código. Cada ruta posible a través de la macro, incluidas las salidas tempranas dentro de las declaraciones If, debe conducir al comando que vuelve a activar la actualización. Usar la estructura de manejo de errores anterior evita esto.

El parpadeo persiste en los controles de UserForm

La propiedad Application.ScreenUpdating no controla el repintado de los controles de UserForm como ListBox o MultiPage. Para estos, es posible que necesite usar los métodos UserForm.Hide y UserForm.Show o controlar propiedades específicas como ListBox.Clear en un lote para minimizar las actualizaciones visuales.

ScreenUpdating frente a otros métodos de rendimiento

Elemento Application.ScreenUpdating Application.Calculation Application.EnableEvents
Propósito principal Controla los refrescos visuales de la pantalla Controla cuándo se recalculan las fórmulas Evita que se ejecuten procedimientos de eventos
Configuración típica Establecer en False al inicio de la macro Establecer en xlCalculationManual Establecer en False al inicio de la macro
Ganancia de rendimiento Elimina el parpadeo, acelera las operaciones de visualización Acelera las macros que escriben en muchas celdas con fórmulas Acelera las macros que activan eventos Worksheet_Change
Riesgo si se deja desactivado Excel parece congelado, sin actualizaciones visuales Las fórmulas muestran resultados obsoletos o incorrectos Las macros o funciones que dependen de eventos no funcionarán
Comando de restablecimiento Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True

Ahora puede escribir macros de VBA que se ejecuten sin el molesto parpadeo de pantalla. Comience agregando Application.ScreenUpdating = False a su próximo módulo de código. Para obtener mejoras de velocidad adicionales, combínelo con Application.Calculation = xlCalculationManual. Recuerde usar siempre un manejador de errores para restablecer la propiedad ScreenUpdating a True, garantizando que Excel siga siendo utilizable incluso después de un error de macro.

ADVERTISEMENT