Så kult som det ser ut når du ser på din VBA -makro manipulere skjermen, kan du hjelpe makroen med å kjøre raskere hvis du slår av (deaktiverer) ScreenUpdating.
Deaktiver skjermoppdatering
1. For å deaktivere ScreenUpdating, sett denne linjen i begynnelsen av koden:
1 | Application.ScreenUpdating = Falsk |
Aktiver skjermoppdatering
2. For å aktivere ScreenUpdating igjen, sett denne linjen på slutten av koden:
1 | Application.ScreenUpdating = True |
Eksempel på VBA -skjermoppdatering
Fremgangsmåten din vil da se slik ut:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Falsk'Gjør noeOmråde ("a1"). Kopieringsområde ("b1")Område ("a2"). Kopieringsområde ("b2")Område ("a3"). Kopieringsområde ("b3")Application.ScreenUpdating = TrueSlutt Sub |
Skjermoppdatering Oppdater
Hvis du deaktiverer ScreenUpdating, vil VBA -koden din kjøre MYE raskere, men det vil også få arbeidet ditt til å virke mer profesjonelt. Sluttbrukere vil vanligvis ikke se handlingene bak prosedyrene i prosedyrene dine (spesielt når prosedyren går tregt). Du vil kanskje ikke at sluttbrukerne skal se funksjonen bak kulissene (f.eks. Skjulte regneark). Jeg anbefaler å deaktivere (og re-aktivere) ScreenUpdating i praktisk talt alle prosedyrene dine.
Det er imidlertid noen ganger du vil at skjermen skal oppdateres. For å oppdatere skjermen må du midlertidig slå på ScreenUpdating igjen (det er ingen kommando for oppdatering av skjermen):
123 | Application.ScreenUpdating = True'Gjør noeApplication.ScreenUpdating = Falsk |
VBA -innstillinger - Fremskynde koden
Det er flere andre innstillinger du kan leke med for å forbedre kodehastigheten.
Deaktivering av automatiske beregninger kan gjøre en STOR forskjell i hastighet:
1 | Application.Calculation = xlManual |
Deaktivering av statuslinjen vil også gjøre en liten forskjell:
1 | Application.DisplayStatusBar = Falsk |
Hvis arbeidsboken din inneholder hendelser, bør du vanligvis deaktivere hendelser i begynnelsen av prosedyren:
1 | Application.EnableEvents = Falsk |
Sist kan VBA-koden din senkes når Excel prøver å beregne sideskift på nytt (Merk: ikke alle prosedyrer påvirkes). For å deaktivere visning av sideskift, bruk denne kodelinjen:
1 | ActiveSheet.DisplayPageBreaks = Falsk |