Części programu Excel zmienią kolor na biały lub szary podczas uruchamiania kodu VBA w programie Excel 2013

Symptomy

Po uruchomieniu kodu programu Microsoft Visual Basic for Applications (VBA) w Microsoft Excel 2013 fragmenty programu Excel mogą być białe lub szare w zależności od motywu pakietu Office. Pozostaje puste do momentu ukończenia kodu. Ten problem może wystąpić, jeśli kod VBA wykonuje co najmniej jedną z następujących akcji w makrach, które działają wystarczająco długo, aby użytkownik mógł wyświetlić wyniki przed ukończeniem makra:

  • Wielokrotne zaznaczanie komórek
  • Wstawianie arkuszy
  • Aktualizowanie lub otwieranie okienk zadań
  • Dodawanie skoroszytu

Przyczyna

Ten problem jest spowodowany zmianami wprowadzonymi w pakiecie Microsoft Office 2013 w celu zoptymalizowania nowego aparatu graficznego.

Obejście problemu

  1. Użyj funkcji ScreenUpdating, aby wyłączyć aktualizacje ekranu programu Excel, aby nie widzieć zmian, gdy są wyłączone. Może to również zwiększyć wydajność makr.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Jeśli chcesz zobaczyć zmiany ekranu, wstaw polecenie DoEvents po wierszu w kodzie, który powoduje, że ekran będzie wyświetlany jako biały. Oszczędne korzystanie z funkcji DoEvents pomoże utrzymać wydajność makr.

    Workbooks.Add
    DoEvents
    

Stan

Jest to znane ograniczenie w programie Excel 2013.

Uwaga

W przypadku wszystkich wersji programu Excel podobny efekt może wystąpić w długotrwałych makrach, gdy system Windows zmieni kolor aplikacji na biały i oznacza, że nie odpowiada. Dzieje się tak, ponieważ program Excel nie odpowiada systemowi Windows podczas działania makra. Usługa DoEvents pomoże również w tym scenariuszu, umożliwiając programowi Excel reagowanie na system Windows i zezwalanie na odzyskiwanie ekranu aplikacji.