VBA Berekenen - Nu, Werkmap, Werkblad of Bereik

In deze zelfstudie leert u alle verschillende berekeningsopties in VBA.

Standaard berekent Excel alle geopende werkmappen telkens wanneer een werkmapwijziging wordt aangebracht. Het doet dit door een berekeningsboom te volgen waarbij als cel A1 wordt gewijzigd, het alle cellen bijwerkt die afhankelijk zijn van cel A1 enzovoort. Dit kan er echter voor zorgen dat uw VBA-code wordt uitgevoerd extreem langzaam, zoals elke keer dat een cel verandert, moet Excel opnieuw berekenen.

Om uw VBA-snelheid te verhogen, wilt u vaak automatische berekeningen aan het begin van uw procedures uitschakelen:

1 Toepassing. Berekening = xlHandmatig

en schakel het aan het einde opnieuw in:

1 Toepassing.Berekening = xlAutomatisch

Maar wat als u al uw werkboeken (of een deel ervan) wilt berekenen binnen uw procedure? De rest van deze tutorial leert je wat je moet doen.

Bereken nu

U kunt de opdracht Berekenen gebruiken om alles opnieuw te berekenen (in alle geopende werkmappen):

1 Berekenen

Dit is meestal de beste methode om te gebruiken. U kunt echter ook smallere berekeningen uitvoeren voor een betere snelheid.

Alleen blad berekenen

U kunt VBA ook vertellen om alleen een specifiek blad te berekenen.

Deze code berekent het actieve blad opnieuw:

1 ActiveSheet.Berekenen

Deze code berekent Blad1 opnieuw:

1 Bladen ("Blad1"). Berekenen

Bereken bereik

Als u een smallere berekening nodig heeft, kunt u VBA vragen om alleen een celbereik te berekenen:

1 Spreadsheets ("Blad1"). Bereik ("a1:a10"). Berekenen

Bereken individuele formule

Deze code berekent alleen een individuele celformule:

1 Bereik ("a1"). Berekenen

Bereken werkmap

Er is geen VBA-optie om alleen een hele werkmap te berekenen. Als u een hele werkmap moet berekenen, kunt u het beste de opdracht Berekenen gebruiken:

1 Berekenen

Hiermee worden alle geopende werkmappen berekend. Als u zich echt zorgen maakt over snelheid en een hele werkmap wilt berekenen, kunt u mogelijk selectiever zijn over welke werkmappen tegelijkertijd geopend zijn.

Bereken werkmap - Methoden die niet werken

Er zijn een aantal methoden die u in de verleiding zou kunnen brengen om VBA te dwingen alleen een werkmap te berekenen, maar geen van hen zal goed werken.

Deze code doorloopt elk werkblad in de werkmap en berekent de bladen één voor één opnieuw:

1234567 Sub Recalculate_Workbook()Dim ws als werkbladVoor elke ws In werkbladenws.BerekenenVolgende wsEinde sub

Deze code werkt prima als al uw werkbladen "op zichzelf staand" zijn, wat betekent dat geen van uw werkbladen berekeningen bevat die naar andere werkbladen verwijzen.

Als uw werkbladen echter naar andere bladen verwijzen, worden uw berekeningen mogelijk niet correct bijgewerkt. Als u bijvoorbeeld Blad1 vóór Blad2 berekent, maar de formules van Blad1 afhankelijk zijn van berekeningen die in Blad2 zijn gedaan, bevatten uw formules niet de meest actuele waarden.

U kunt ook proberen alle bladen tegelijk te selecteren en het actieve blad te berekenen:

12 Dit Werkboek.Blad.SelecterenActiveSheet.Berekenen

Dit zal echter hetzelfde probleem veroorzaken.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave