Udostępnij za pośrednictwem


Części programu Excel są białe lub szare po uruchomieniu kodu VBA w programie Excel 2013

Symptomy

Po uruchomieniu kodu programu Microsoft Visual Basic for Applications (VBA) w programie Microsoft Excel 2013 fragmenty programu Excel mogą być wyświetlane w kolorze białym lub szarym, w zależności od motywu pakietu Office. Pozostaje ona pusta, dopóki kod nie zostanie ukończony. Ten problem może wystąpić, jeśli kod VBA wykonuje co najmniej jedną z następujących akcji w makrze, które działa wystarczająco długo, aby użytkownik mógł zobaczyć wyniki przed ukończeniem makra:

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

Przyczyna

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

Rozwiązanie

  1. Użyj opcji ScreenUpdating, aby wyłączyć aktualizacje ekranu programu Excel, aby nie były widoczne zmiany, gdy są wyłączone. Może to również poprawić 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 biały. Korzystanie z rozwiązania DoEvents oszczędnie pomaga zachować wydajność makr.

    Workbooks.Add
    DoEvents
    

Stan

To ograniczenie jest znanym ograniczeniem w programie Excel 2013.

Uwaga 16.

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 na system Windows, gdy makro jest uruchomione. Rozwiązanie DoEvents pomoże również w tym scenariuszu, umożliwiając programowi Excel reagowanie na system Windows i umożliwianie odzyskania ekranu aplikacji.