Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Tabellblätter neu berechnen

VBA Tabellblätter neu berechnen
Loeffelmann
Hallo,
mein Problem ist folgendes: Ich lasse mir in einer Zelle den Dateinamen inkl. Name des Tabellenblattes ausgeben. In jedem TB in der gleichen Zelle (ca. 20 Reiter). Wenn ich nun die TB durchgehe, aktualisiert sich das aber nicht auf das aktuelle TB. Nur wenn ich F9 für neu berechnen drücke. Die Berechnung steht bei mir auf Automatisch.
Gibt es eine VBA Möglichkeit die jedes Mal, wenn ich ein TB aufmache eine automatische Neuberechnung der ganzen Arbeitsmappe durchführt, ohne dass ich irgendwo klicken muss?
Falls ja, wo (in einem Modul oder in den einzelnen Tabellenblättern) muss ich diesen VBA Code eingeben.
Schonmal herzlichen Dank für die Hilfe
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Tabellblätter neu berechnen
19.07.2010 17:03:24
Beverly
Hi,
ins Codemodul von DieseArbeitsmappe:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.Calculate
End Sub



Anzeige
AW: VBA Tabellblätter neu berechnen
19.07.2010 19:11:58
Loeffelmann
Hallo Karin,
danke für die prompte Antwort. Doch wie es immer so läuft, kommt nun ein anderes Problem mit einem bestehenden Makro. Da ich per Marko von einem Tabellenblatt A etwas kopiere und in ein anderes Tabellblatt B einfügen will, funktioniert der Befehl paste nicht mehr, da nach Aufruf von B nun kalkuliert wird und der zu kopierende Inhalt von A nicht mehr in der Zwischenablage ist.
Ist es möglich von der Kalkulation ein Tabellenblatt auszunehmen?
Anzeige
AW: VBA Tabellblätter neu berechnen
19.07.2010 19:19:43
Beverly
Hi,
mal ungetestet:
    If Sh.Name  "Tabelle B" Then Application.Calculate



AW: VBA Tabellblätter neu berechnen
20.07.2010 08:44:18
Loeffelmann
getestet und es funktioniert. 1000 Dank. Manchmal ist es gar nicht so kompliziert wie man es sich macht :-)
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Tabellblätter automatisch neu berechnen


Schritt-für-Schritt-Anleitung

Um die Tabellblätter in Excel automatisch neu zu berechnen, kannst du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die gesamte Arbeitsmappe neu berechnet wird, wenn du ein Tabellenblatt aktivierst.

  1. Öffne die Excel-Datei, in der du die Neuberechnung durchführen möchtest.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Im Projektfenster, suche deine Arbeitsmappe (z.B. "VBAProject (deineDatei.xlsx)").

  4. Doppelklicke auf "DieseArbeitsmappe".

  5. Füge den folgenden Code ein:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        Application.Calculate
    End Sub
  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Jetzt wird jedes Mal, wenn du ein Tabellenblatt öffnest, die gesamte Arbeitsmappe neu berechnet.


Häufige Fehler und Lösungen

Problem: Der Befehl Paste funktioniert nicht, da die Zwischenablage nach der Neuberechnung geleert wird.

Lösung: Um ein bestimmtes Tabellenblatt von der Berechnung auszunehmen, kannst du den folgenden Code verwenden:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name <> "Tabelle B" Then
        Application.Calculate
    End If
End Sub

Mit diesem Code wird die Berechnung nur für alle Tabellenblätter außer "Tabelle B" durchgeführt. Achte darauf, den Namen des zu ignorierenden Blattes anzupassen.


Alternative Methoden

Wenn du eine spezifische Neuberechnung für bestimmte Bereiche oder Formeln durchführen möchtest, kannst du folgende Methoden verwenden:

  • Einzelne Zellen oder Bereiche berechnen: Anstelle von Application.Calculate kannst du Range("A1").Calculate verwenden, um nur eine bestimmte Zelle oder einen Zellbereich neu zu berechnen.

  • Berechnung im Hintergrund: Um die Berechnung im Hintergrund durchzuführen, kannst du Application.Calculation = xlManual setzen, um die automatische Berechnung zu deaktivieren und dann manuell mit Application.Calculate auszuführen, wann immer du möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie du den VBA-Code anpassen kannst:

  1. Neuberechnung für mehrere Blätter: Wenn du nur eine Gruppe von Blättern neu berechnen möchtest, kannst du eine Liste der Blattnamen speichern und überprüfen, ob das aktuelle Blatt dazugehört.

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        Dim Blätter As Variant
        Blätter = Array("Tabelle A", "Tabelle C")
        If Not IsError(Application.Match(Sh.Name, Blätter, 0)) Then
            Application.Calculate
        End If
    End Sub
  2. Formeln in einem bestimmten Blatt aktualisieren: Wenn du nur die Formeln in einem bestimmten Blatt aktualisieren möchtest, kannst du Folgendes tun:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sh.Name = "Tabelle A" Then
            Sh.Calculate
        End If
    End Sub

Tipps für Profis

  • Neuberechnung optimieren: Verwende Application.ScreenUpdating = False, bevor du große Berechnungen durchführst, um die Ladezeiten zu reduzieren.

  • Button für Neuberechnung: Du kannst einen Button in Excel einfügen, um eine manuelle Neuberechnung auszulösen. Weisen den Button dem Makro Application.Calculate zu.

  • Verwendung von Threads: Wenn du mit großen Datensätzen arbeitest, überlege, ob du die Berechnung auf mehreren Threads durchführen kannst, um die Leistung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die Neuberechnung in Excel anpassen?
Du kannst die Berechnungseinstellungen in Excel unter "Formeln" > "Berechnungsoptionen" ändern. Hier kannst du zwischen "Automatisch" und "Manuell" wählen.

2. Gibt es eine Möglichkeit, bestimmte Formeln zu ignorieren?
Ja, du kannst die Berechnung für bestimmte Zellen oder Bereiche steuern, indem du die Calculate Methode nur für diese anwendest.

3. Was passiert, wenn ich den Code nicht in "DieseArbeitsmappe" einfüge?
Der Code muss in "DieseArbeitsmappe" eingefügt werden, da dieser spezifisch für das Workbook-Ereignis ist. Wenn du ihn in einem Modul einfügst, wird er nicht wie gewünscht funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige