Lika coolt som det ser ut när ditt VBA -makro manipulerar skärmen, kan du hjälpa ditt makro att springa snabbare om du stänger av (inaktiverar) ScreenUpdating.
Inaktivera ScreenUpdating
1. För att inaktivera ScreenUpdating, i början av koden, lägg den här raden:
1 | Application.ScreenUpdating = Falskt |
Aktivera skärmuppdatering
2. För att återaktivera ScreenUpdating, i slutet av koden, lägg den här raden:
1 | Application.ScreenUpdating = True |
Exempel på VBA -skärmuppdatering
Din procedur kommer då att se ut så här:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Falskt'Göra någontingOmråde ("a1"). Kopieringsintervall ("b1")Område ("a2"). Kopieringsintervall ("b2")Område ("a3"). Kopieringsintervall ("b3")Application.ScreenUpdating = TrueAvsluta Sub |
Skärmuppdatering Uppdatera
Om du inaktiverar ScreenUpdating kommer din VBA -kod att köra MYCKET snabbare, men det kommer också att få ditt arbete att se mer professionellt ut. Slutanvändare vill vanligtvis inte se åtgärderna bakom kulisserna i dina förfaranden (särskilt när proceduren går långsamt). Du kanske inte heller vill att slutanvändare ska se funktionen bakom kulisserna (t.ex. dolda kalkylblad). Jag rekommenderar att du inaktiverar (och återaktiverar) ScreenUpdating i praktiskt taget alla dina procedurer.
Det finns dock vissa tillfällen när du vill att skärmen ska uppdateras. För att uppdatera skärmen måste du tillfälligt slå på ScreenUpdating (det finns inget kommando ”uppdatera” på skärmen):
123 | Application.ScreenUpdating = True'Göra någontingApplication.ScreenUpdating = Falskt |
VBA -inställningar - påskynda koden
Det finns flera andra inställningar att spela med för att förbättra din kodhastighet.
Inaktivering av automatiska beräkningar kan göra en STOR skillnad i hastighet:
1 | Application.Calculation = xlManual |
Inaktivering av statusfältet kommer också att göra en liten skillnad:
1 | Application.DisplayStatusBar = Falskt |
Om din arbetsbok innehåller händelser bör du vanligtvis inaktivera händelser i början av din procedur:
1 | Application.EnableEvents = Falskt |
Sist kan din VBA-kod bromsas när Excel försöker beräkna sidbrytningar igen (Obs! Alla procedurer påverkas inte). Använd denna kodrad för att inaktivera visning av sidbrytningar:
1 | ActiveSheet.DisplayPageBreaks = Falskt |