При запуске кода VBA в Excel 2013 части Excel поворачиваются в белый или серый цвет

Симптомы

При запуске кода Microsoft Visual Basic для приложений (VBA) в Microsoft Excel 2013 части Excel могут выглядеть белыми или серыми в зависимости от темы Office. Он остается пустым до завершения кода. Эта проблема может возникнуть, если код VBA выполняет одно или несколько из следующих действий в макросе, который выполняется достаточно долго, чтобы пользователь мог увидеть результаты до завершения макроса:

  • Многократное выделение ячеек
  • Вставка листов
  • Обновление или открытие областей задач
  • Добавление книги

Причина

Эта проблема вызвана изменениями, внесенными в Microsoft Office 2013 для оптимизации нового графического модуля.

Обходной путь

  1. Используйте параметр ScreenUpdating, чтобы отключить обновления экрана Excel, чтобы не увидеть изменения, пока они отключены. Это также может повысить производительность макроса.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Если вам нужно увидеть изменения экрана, вставьте команду DoEvents после строки в коде, которая приводит к отображению экрана белым цветом. Использование DoEvents с осторожностью поможет поддерживать производительность макросов.

    Workbooks.Add
    DoEvents
    

Состояние

Это известное ограничение в Excel 2013.

Примечание.

Для всех версий Excel аналогичный эффект может произойти в длительных макросах, когда Windows помечает приложение белым цветом и помечает его не отвечает. Это происходит из-за того, что Excel не отвечает на запросы Windows во время выполнения макроса. DoEvents также поможет в этом сценарии, разрешив Excel реагировать на Windows и позволить экрану приложения восстановиться.