Når du opdaterer en celleværdi, gennemgår Excel en proces til genberegning af projektmappen. Når du arbejder direkte i Excel, vil du have, at dette sker 99,9% af tiden (undtagelsen er, hvis du arbejder med en ekstremt stor projektmappe). Dette kan dog virkelig bremse din VBA -kode. Det er en god praksis at indstille dine beregninger til manuelle i begyndelsen af makroer og gendanne beregninger i slutningen af makroer. Hvis du skal genberegne projektmappen, kan du manuelt fortælle Excel, at den skal beregne.
Slå automatiske beregninger fra
Du kan deaktivere automatisk beregning med en makro ved at indstille den til xlmanual. Brug følgende stykke VBA -kode:
1 | Application.Calculation = xlManual |
Slå automatiske beregninger til igen
Sådan aktiveres automatisk beregning igen med indstillingen xlAutomatic:
1 | Beregning = xlAutomatisk |
Jeg anbefaler, at du deaktiverer automatiske beregninger i begyndelsen af din procedure og genaktiverer automatiske beregninger i slutningen. Det vil se sådan ud:
Deaktiver Makroeksempel for automatiske beregninger
12345678 | Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Gør nogetBeregning = xlAutomatiskAfslut Sub |
Manuel beregning
Når automatiske beregninger er deaktiveret, kan du bruge Beregn kommando for at tvinge Excel til at genberegne:
1 | Beregn |
Du kan også bede Excel om kun at genberegne et individuelt regneark:
1 | Regneark ("ark1"). Beregn |
Du kan også fortælle VBA at genberegne bare et område (klik for at læse vores artikel om VBA -beregningsmetoder)
Sådan kan dette se ud inde i en makro:
12345678910111213 | Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Gør noget'GenberegningBeregn'Gør flere tingBeregning = xlAutomatiskAfslut Sub |
VBA -indstillinger - Fremskynd kode
Hvis dit mål er at fremskynde din kode, bør du også overveje at justere disse andre indstillinger:
Deaktivering af Screenupdating kan gøre en enorm forskel i hastighed:
1 | Application.ScreenUpdating = Falsk |
Deaktivering af statuslinjen vil også gøre en lille forskel:
1 | Application.DisplayStatusBar = Falsk |
Hvis din projektmappe indeholder begivenheder, bør du også deaktivere begivenheder i starten af dine procedurer (for at fremskynde koden og for at forhindre endeløse sløjfer!):
1 | Application.EnableEvents = Falsk |
Sidst kan din VBA-kode bremses, når Excel forsøger at genberegne sideskift (Bemærk: ikke alle procedurer påvirkes). For at deaktivere DisplayPageBreaks skal du bruge denne kodelinje:
1 | ActiveSheet.DisplayPageBreaks = Falsk |