Slå av automatiske beregninger (eller på) - eksempler på VBA -kode

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

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave