Rückkehr in VBA-Code-Beispiele

VBA-Berechnungen – Jetzt, Arbeitsmappe, Arbeitsblatt oder Bereich

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

Standardmäßig berechnet Excel alle geöffneten Arbeitsmappen, wenn eine Änderung in der Arbeitsmappe vorgenommen wird. Dies geschieht anhand eines Berechnungsbaums: Wenn Zelle A1 geändert wird, werden alle Zellen aktualisiert, die sich auf Zelle A1 beziehen, und so weiter. Dies kann jedoch dazu führen, dass Ihr VBA-Code extrem langsam läuft, da Excel bei jeder Änderung einer Zelle eine Neuberechnung durchführen muss.

Um Ihre VBA-Geschwindigkeit zu erhöhen, sollten Sie die automatischen Berechnungen zu Beginn Ihrer Prozeduren deaktivieren:

Application.Calculation = xlManual

und sie am Ende wieder zu aktivieren:

Application.Calculation = xlAutomatic

Aber was ist, wenn Sie alle (oder einen Teil) Ihrer Arbeitsmappen innerhalb Ihrer Prozedur berechnen möchten? Im weiteren Verlauf dieses Tutorials erfahren Sie, wie das geht.

Sofort Berechnen

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

Calculate

Dies ist in der Regel die beste Methode, die Sie anwenden können. Sie können jedoch auch engere Berechnungen durchführen, um die Geschwindigkeit zu erhöhen.

Nur Blatt berechnen

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

Mit diesem Code wird das aktive Blatt neu berechnet:

ActiveSheet.Calculate

Mit diesem Code wird Blatt1 neu berechnet:

Sheets("Sheet1").Calculate

Berechnen des Bereichs

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

Sheets("Sheet1").Range("a1:a10").Calculate

Einzelne Formel berechnen

Mit diesem Code wird nur eine einzelne Zellenformel berechnet:

Range("a1").Calculate

Arbeitsmappe berechnen

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

Calculate

Damit werden alle geöffneten Arbeitsmappen berechnet. Wenn es Ihnen wirklich auf Geschwindigkeit ankommt und Sie eine ganze Arbeitsmappe berechnen möchten, können Sie die gleichzeitig geöffneten Arbeitsmappen möglicherweise gezielter auswählen.

Arbeitsmappe berechnen – Methoden, die nicht funktionieren

Es gibt einige Methoden, mit denen Sie VBA zwingen können, nur eine Arbeitsmappe zu berechnen, aber keine davon funktioniert richtig.

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

Sub Arbeitsmappe_Neu_Berechnen()
    Dim ws As Worksheet
    
    For Each ws In Worksheets
        ws.Calculate
    Next ws
End Sub

Dieser Code funktioniert gut, wenn alle Ihre Arbeitsblätter „in sich geschlossen“ sind, d.h. keines Ihrer Blätter enthält Berechnungen, die sich auf andere Blätter beziehen.

Wenn Ihre Arbeitsblätter jedoch auf andere Blätter verweisen, werden Ihre Berechnungen möglicherweise nicht richtig aktualisiert. Wenn Sie z. B. Blatt1 vor Blatt2 berechnen und die Formeln von Blatt1 auf Berechnungen in Blatt2 basieren, enthalten Ihre Formeln nicht die aktuellsten Werte.

Sie können auch versuchen, alle Blätter auf einmal auszuwählen und das aktiveSheet zu berechnen:

ThisWorkbook.Sheets.Select
ActiveSheet.Calculate

Dies führt jedoch zu demselben Problem.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!