VBA-Berechnungen – Jetzt, Arbeitsmappe, Arbeitsblatt oder Bereich
In this Article
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!Learn More!