VBA-Berechnung - Jetzt, Arbeitsmappe, Arbeitsblatt oder Bereich

In diesem Tutorial lernen Sie alle verschiedenen Berechnungsoptionen in VBA kennen.

Standardmäßig berechnet Excel bei jeder Änderung der Arbeitsmappe alle geöffneten Arbeitsmappen. Es tut dies, indem es einem Berechnungsbaum folgt, in dem, wenn Zelle A1 geändert wird, alle Zellen aktualisiert werden, die auf Zelle A1 angewiesen sind und so weiter. Dies kann jedoch dazu führen, dass Ihr VBA-Code ausgeführt wird extrem langsam, da Excel jedes Mal, wenn sich eine Zelle ändert, neu berechnen muss.

Um Ihre VBA-Geschwindigkeit zu erhöhen, möchten Sie häufig automatische Berechnungen zu Beginn Ihrer Verfahren deaktivieren:

1 Anwendung.Berechnung = xlManual

und am Ende wieder aktivieren:

1 Anwendung.Berechnung = xlAutomatic

Was aber, wenn Sie alle (oder einen Teil) Ihrer Arbeitsmappen innerhalb Ihres Verfahrens berechnen möchten? Der Rest dieses Tutorials wird Ihnen beibringen, was zu tun ist.

Jetzt berechnen

Sie können den Befehl Berechnen verwenden, um alles neu zu berechnen (in allen geöffneten Arbeitsmappen):

1 Berechnung

Dies ist normalerweise die beste Methode. Sie können jedoch auch engere Berechnungen durchführen, um die Geschwindigkeit zu verbessern.

Nur Blatt berechnen

Sie können VBA auch anweisen, nur ein bestimmtes Blatt zu berechnen.

Dieser Code berechnet das aktive Blatt neu:

1 ActiveSheet.Berechnen

Dieser Code berechnet Sheet1 neu:

1 Sheets("Sheet1").Berechnen

Reichweite berechnen

Wenn Sie eine engere Berechnung benötigen, können Sie VBA anweisen, nur einen Zellbereich zu berechnen:

1 Sheets("Sheet1").Range("a1:a10").Berechnen

Individuelle Formel berechnen

Dieser Code berechnet nur eine einzelne Zellformel:

1 Reichweite("a1").Berechnen

Arbeitsmappe berechnen

Es gibt keine VBA-Option, um nur eine gesamte Arbeitsmappe zu berechnen. Wenn Sie eine ganze Arbeitsmappe berechnen müssen, verwenden Sie am besten den Befehl Berechnen:

1 Berechnung

Dadurch werden alle geöffneten Arbeitsmappen berechnet. Wenn Ihnen die Geschwindigkeit wirklich wichtig ist und Sie eine gesamte Arbeitsmappe berechnen möchten, können Sie möglicherweise selektiver auswählen, welche Arbeitsmappen gleichzeitig geöffnet sind.

Arbeitsmappe berechnen - Methoden, die nicht funktionieren

Es gibt einige Methoden, mit denen Sie versucht sein könnten, VBA zu zwingen, nur eine Arbeitsmappe zu berechnen, aber keine von ihnen wird richtig funktionieren.

Dieser Code durchläuft jedes Arbeitsblatt in der Arbeitsmappe und berechnet die Blätter einzeln neu:

1234567 Unter Recalculate_Workbook()Dim ws als ArbeitsblattFür jedes ws in Arbeitsblätternws.BerechnenNächstes wsEnd Sub

Dieser Code funktioniert einwandfrei, wenn alle Ihre Arbeitsblätter „in sich geschlossen“ sind, was bedeutet, dass keines Ihrer Blätter Berechnungen enthält, die sich auf andere Blätter beziehen.

Wenn Ihre Arbeitsblätter jedoch auf andere Blätter verweisen, werden Ihre Berechnungen möglicherweise nicht ordnungsgemäß aktualisiert. Wenn Sie beispielsweise Sheet1 vor Sheet2 berechnen, die Formeln von Sheet1 jedoch auf Berechnungen basieren, die in Sheet2 durchgeführt wurden, enthalten Ihre Formeln nicht die aktuellsten Werte.

Sie können auch versuchen, alle Blätter gleichzeitig auszuwählen und das aktive Blatt zu berechnen:

12 ThisWorkbook.Sheets.SelectActiveSheet.Berechnen

Dies wird jedoch das gleiche Problem verursachen.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave