Denne vejledning lærer dig alle de forskellige beregningsmuligheder i VBA.
Som standard beregner Excel alle åbne projektmapper, hver gang der ændres en projektmappe. Det gør det ved at følge et beregningstræ, hvor hvis celle A1 ændres, opdaterer den alle celler, der er afhængige af celle A1 og så videre. Dette kan dog få din VBA -kode til at køre ekstremt langsomt, som hver gang en celle ændres, skal Excel beregne igen.
For at øge din VBA -hastighed vil du ofte deaktivere automatiske beregninger i begyndelsen af dine procedurer:
1 | Application.Calculation = xlManual |
og genaktiver det i slutningen:
1 | Beregning = xlAutomatisk |
Men hvad nu hvis du vil beregne alle (eller dele) af dine projektmapper inden for din procedure? Resten af denne vejledning lærer dig, hvad du skal gøre.
Beregn nu
Du kan bruge kommandoen Beregn til at genberegne alt (i alle åbne projektmapper):
1 | Beregn |
Dette er normalt den bedste metode at bruge. Du kan dog også udføre mere snævre beregninger for forbedret hastighed.
Beregn kun ark
Du kan også fortælle VBA kun at beregne et bestemt ark.
Denne kode genberegner det aktive ark:
1 | ActiveSheet. Beregn |
Denne kode genberegner Sheet1:
1 | Ark ("Ark1"). Beregn |
Beregn rækkevidde
Hvis du har brug for en mere snæver beregning, kan du bede VBA om kun at beregne en række celler:
1 | Ark ("Ark1"). Område ("a1: a10"). Beregn |
Beregn individuel formel
Denne kode beregner kun en individuel celleformel:
1 | Område ("a1"). Beregn |
Beregn projektmappe
Der er ingen VBA -mulighed for kun at beregne en hel projektmappe. Hvis du skal beregne en hel projektmappe, er den bedste mulighed at bruge kommandoen Beregn:
1 | Beregn |
Dette vil beregne alle åbne projektmapper. Hvis du virkelig er bekymret for hastigheden og vil beregne en hel projektmappe, kan du muligvis være mere selektiv om, hvilke projektmapper der er åbne på én gang.
Beregn projektmappe - metoder der ikke virker
Der er et par metoder, du kan blive fristet til at bruge til at tvinge VBA til bare at beregne en projektmappe, men ingen af dem fungerer korrekt.
Denne kode går gennem hvert regneark i projektmappen og genberegner arkene et ad gangen:
1234567 | Sub Recalculate_Workbook ()Dim ws Som regnearkFor hver gang i regnearkws.BeregnNæste wsAfslut Sub |
Denne kode fungerer fint, hvis alle dine regneark er "selvstændige", hvilket betyder, at ingen af dine ark indeholder beregninger, der refererer til andre ark.
Men hvis dine regneark refererer til andre ark, opdateres dine beregninger muligvis ikke korrekt. For eksempel, hvis du beregner Sheet1 før Sheet2, men Sheet1's formler er afhængige af beregninger udført i Sheet2, så vil dine formler ikke indeholde de mest opdaterede værdier.
Du kan også prøve at vælge alle ark på én gang og beregne det aktive ark:
12 | ThisWorkbook.Sheets.SelectActiveSheet. Beregn |
Dette vil imidlertid forårsage det samme problem.