Az Excel egyes részei fehérre vagy szürkére változnak, amikor VBA-kódot futtat az Excel 2013-ban

Jelenségek

Amikor Microsoft Visual Basic for Applications (VBA) kódot futtat Microsoft Excel 2013, az Excel egyes részei az Office-témától függően fehér vagy szürke színnel jelenhetnek meg. A kód befejeződéséig üres marad. Ez a probléma akkor fordulhat elő, ha a VBA-kód végrehajt egy vagy több alábbi műveletet egy olyan makróban, amely elég hosszú ideig fut ahhoz, hogy a felhasználó lássa az eredményeket a makró befejeződése előtt:

  • Cellák ismételt kijelölése
  • Lapok beszúrása
  • Munkaablakok frissítése vagy megnyitása
  • Munkafüzet hozzáadása

A probléma oka

Ezt a problémát a Microsoft Office 2013-ban az új grafikus motor optimalizálása érdekében végrehajtott módosítások okozzák.

Kerülő megoldás

  1. A ScreenUpdating funkcióval letilthatja az Excel képernyőfrissítéseit, hogy ne láthassa a módosításokat, amíg le vannak tiltva. Ez javíthatja a makró teljesítményét is.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Ha meg kell jelennie a képernyő változásainak, szúrjon be egy DoEvents parancsot a kód azon sora után, amely fehér színt eredményez a képernyőn. A DoEvents takarékos használata segít fenntartani a makróteljesítményt.

    Workbooks.Add
    DoEvents
    

Állapot

Ez egy ismert korlátozás az Excel 2013-ban.

Megjegyzés:

Az Excel minden verziójában hasonló hatás jelentkezhet a hosszú ideig futó makrókban, amikor a Windows fehérre változtatja az alkalmazást, és nem válaszol. Ez azért fordul elő, mert az Excel nem válaszol a Windowsra, miközben a makró fut. A DoEvents ebben a forgatókönyvben is segítséget nyújt, mivel lehetővé teszi, hogy az Excel válaszoljon a Windowsra, és engedélyezze az alkalmazás képernyőjének helyreállítását.