Las partes de Excel se vuelven blancas o grises al ejecutar código VBA en Excel 2013

Síntomas

Al ejecutar código de Microsoft Visual Basic para Aplicaciones (VBA) en Microsoft Excel 2013, las partes de Excel pueden parecer blancas o grises, en función del tema de Office. Permanece en blanco hasta que se completa el código. Este problema puede producirse si el código VBA realiza una o varias de las siguientes acciones en una macro que se ejecuta el tiempo suficiente para que el usuario vea los resultados antes de que se complete la macro:

  • Seleccionar celdas repetidamente
  • Insertar hojas
  • Actualizar o abrir paneles de tareas
  • Agregar un libro

Causa

Este problema se debe a los cambios realizados en Microsoft Office 2013 para optimizar el nuevo motor gráfico.

Solución alternativa

  1. Use ScreenUpdating para deshabilitar las actualizaciones de pantalla de Excel para que no vea los cambios mientras están deshabilitados. Esto también puede mejorar el rendimiento de la macro.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Si necesita ver los cambios de pantalla, inserte un comando DoEvents después de la línea en el código que hace que la pantalla aparezca en blanco. El uso de DoEvents con moderación ayudará a mantener el rendimiento de las macros.

    Workbooks.Add
    DoEvents
    

Estado

Se trata de una limitación conocida en Excel 2013.

Nota:

Para todas las versiones de Excel, puede producirse un efecto similar en macros de larga duración cuando Windows activa la aplicación en blanco y la marca como no responde. Esto se produce porque Excel no responde a Windows mientras se ejecuta la macro. DoEvents también ayudará en este escenario al permitir que Excel responda a Windows y permita que la pantalla de la aplicación se recupere.