Når du oppdaterer en celleverdi, går Excel gjennom en prosess for å beregne arbeidsboken på nytt. Når du jobber direkte i Excel, vil du at dette skal skje 99,9% av tiden (unntaket er hvis du jobber med en ekstremt stor arbeidsbok). Dette kan imidlertid virkelig bremse VBA -koden din. Det er en god praksis å sette beregningene til manuell i begynnelsen av makroer og gjenopprette beregninger på slutten av makroer. Hvis du trenger å beregne arbeidsboken på nytt, kan du be Excel om å beregne den manuelt.
Slå av automatiske beregninger
Du kan slå av automatisk beregning med en makro ved å sette den til xlmanual. Bruk følgende stykke VBA -kode:
1 | Application.Calculation = xlManual |
Slå automatiske beregninger på igjen
For å slå på automatisk beregning med innstillingen xlAutomatic:
1 | Application.Calculation = xlAutomatic |
Jeg anbefaler at du deaktiverer automatiske beregninger helt i begynnelsen av prosedyren og aktiverer automatiske beregninger på nytt på slutten. Det vil se slik ut:
Deaktiver makroeksempel for automatiske beregninger
12345678 | Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Gjør noeApplication.Calculation = xlAutomaticSlutt Sub |
Manuell beregning
Når automatiske beregninger er deaktivert, kan du bruke Regne ut kommando for å tvinge Excel til å beregne på nytt:
1 | Regne ut |
Du kan også be Excel om å bare beregne et enkelt regneark på nytt:
1 | Regneark ("ark1"). Beregn |
Du kan også be VBA om å bare beregne et område på nytt (klikk for å lese artikkelen vår om VBA -beregningsmetoder)
Slik kan dette se ut inne i en makro:
12345678910111213 | Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Gjør noe'GjentaRegne ut'Gjør flere tingApplication.Calculation = xlAutomaticSlutt Sub |
VBA -innstillinger - Fremskynde koden
Hvis målet ditt er å øke hastigheten på koden din, bør du også vurdere å justere disse andre innstillingene:
Deaktivering av Screenupdating kan gjøre en stor forskjell i hastighet:
1 | Application.ScreenUpdating = Falsk |
Å slå av statuslinjen vil også gjøre en liten forskjell:
1 | Application.DisplayStatusBar = Falsk |
Hvis arbeidsboken din inneholder hendelser, bør du også deaktivere hendelser ved starten av prosedyrene (for å øke hastigheten på koden og for å forhindre endeløse sløyfer!):
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 å slå av DisplayPageBreaks bruker du denne kodelinjen:
1 | ActiveSheet.DisplayPageBreaks = Falsk |