Části Excelu se při spuštění kódu VBA v Excelu 2013 změní na bílou nebo šedou

Příznaky

Když v Microsoft Excel 2013 spustíte kód jazyka VBA (Microsoft Visual Basic for Applications), můžou se části Excelu zobrazovat bíle nebo šedě v závislosti na motivu Office. Zůstane prázdný, dokud se kód neskončí. K tomuto problému může dojít, pokud kód jazyka VBA provede jednu nebo více z následujících akcí v makrech, které běží dostatečně dlouho, aby uživatel viděl výsledky před dokončením makra:

  • Opakované výběr buněk
  • Vložit listy
  • Aktualizace nebo otevření podokna úloh
  • Přidání sešitu

Příčina

Příčinou tohoto problému jsou změny provedené v Microsoft Office 2013 za účelem optimalizace nového grafického modulu.

Řešení

  1. Pomocí funkce ScreenUpdating (Zvýšení obrazovky) zakažte aktualizace obrazovky Excelu, abyste neviděli změny, když jsou zakázané. Tím se také může zvýšit výkon maker.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Pokud potřebujete vidět změny obrazovky, vložte za řádek v kódu příkaz DoEvents, který způsobí, že obrazovka bude bílá. Používání nástroje DoEvents střídmě pomůže udržet výkon maker.

    Workbooks.Add
    DoEvents
    

Stav

Jedná se o známé omezení v Excelu 2013.

Poznámka

U všech verzí aplikace Excel může podobný efekt nastat u dlouhotrvajících maker, když systém Windows změní aplikaci na bílou a označí, že neodpovídá. K tomu dochází, protože aplikace Excel nereaguje na systém Windows, když je makro spuštěné. DoEvents vám v tomto scénáři také pomůže tím, že excelu umožní reagovat na Windows a povolit obnovení obrazovky aplikace.