Delar av Excel blir vita eller grå när du kör VBA-kod i Excel 2013

Symptom

När du kör VBA-kod (Microsoft Visual Basic for Applications) i Microsoft Excel 2013 kan delar av Excel se vita eller grå ut, beroende på ditt Office-tema. Den förblir tom tills koden har slutförts. Det här problemet kan inträffa om VBA-koden utför en eller flera av följande åtgärder i ett makro som körs tillräckligt länge för att användaren ska kunna se resultatet innan makrot slutförs:

  • Markera celler upprepade gånger
  • Infoga blad
  • Uppdatera eller öppna åtgärdsfönster
  • Lägga till en arbetsbok

Orsak

Det här problemet orsakas av de ändringar som görs i Microsoft Office 2013 för att optimera den nya grafikmotorn.

Lösning

  1. Använd ScreenUpdating för att inaktivera skärmuppdateringarna i Excel så att du inte ser ändringarna när de är inaktiverade. Detta kan också förbättra makroprestandan.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Om du behöver se skärmändringarna infogar du ett DoEvents-kommando efter raden i koden som gör att skärmen ser vit ut. Om du använder DoEvents på ett sparsamt sätt kan du bibehålla makroprestanda.

    Workbooks.Add
    DoEvents
    

Status

Detta är en känd begränsning i Excel 2013.

Obs!

För alla versioner av Excel kan en liknande effekt uppstå i tidskrävande makron när Windows gör programmet vitt och markerar att det inte svarar. Detta beror på att Excel inte svarar på Windows medan makrot körs. DoEvents hjälper också till i det här scenariot genom att låta Excel svara på Windows och låta programskärmen återställas.