Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro Tabellenblätter nacheinander berechnen

Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:16:47
Karl
Hallo liebe Leute,
ich habe mein Problem von neulich neu strukturiert und habe nun folgende Frage:
Ich möchte die Berechnungen in meiner Excel-Mappe auf manuell setzen, die Tabellenblätter verformeln und anschließend per Makro alle Tabellenblätter nacheinander berechnen lassen. Kann mir vielleicht jemand einen Makro-Code geben, in dem ein Tabellenblatt berechnet wird, 2 Minuten Pause ist und dann das nächste Tabellenblatt berechnet wird? Die Verzögerung soll dazu dienen, einen Absturz von Excel zu verhindern, da die Formeln jeweils Daten aus einer Datenbank ziehen.
Herzliche Grüße
Karl
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:22:44
baschti007
Mach doch so was rein nach dem ersten Makro
Application.Wait(Now + TimeValue("0:02:00"))
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:26:09
Karl
Hi Basti,
diese Funktion hatte ich schon gefunden, nur das Problem ist, dass ich überhaupt keine Makro-Programmierung kann. Ich bräuchte also einen fertigen Code für mein gesamtes Problem, um weiterzukommen.
Herzliche Grüße
Karl
Anzeige
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:29:13
baschti007
Dann müsstest du deine Beispiel Mappe hochladen.
Gruß Basti
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:36:39
Karl
Hallo Basti,
die Mappe ist sehr groß. Besteht nicht die Möglichkeit, den Code für das einzelne Berechnen jedes Arbeitsblattes nacheinander mit dieser Pausenfunktion hier einzufügen? Das kopieren in das Makro könnte ich selbst machen.
Danke für Deine Hilfsbereitschaft!!!
Anzeige
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:46:43
baschti007
Hmm guck mal ob das geht
Sub dd()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Application.Calculate
ws.Application.Wait (Now + TimeValue("0:00:05")) '-- zeit anpassen
Next
MsgBox "Ende"
End Sub

AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 11:22:08
baschti007
Ups so
sonst macht er alle auf einmal =)
Sub dd()
Application.Calculation = xlManual
Dim ws As Worksheet
For Each ws In Worksheets
ws.Calculate
ws.Application.Wait (Now + TimeValue("0:00:01"))
Next
MsgBox "Ende"
End Sub

Anzeige
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 11:35:09
Karl
Irgendwie funktioniert das nicht. Das Makro läuft zwar durch, aber die Zahlen werden nicht aktualisiert. Gibt es noch eine Alternative?
Herzliche Grüße
Karl
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 11:46:41
UweD
wie sieht es mit meiner Lösung aus?
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 11:55:59
baschti007
Komisch bei mir geht es Hier
https://www.herber.de/bbs/user/107026.xlsm
Anzeige
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 12:01:03
Karl
Das Problem könnte sein, dass zwar neu berechnet wird, aber die Formeln zur Datenbank nicht refreshed werden. Ist das ggf. noch ein anderer Befehl?
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 12:09:09
baschti007

Sub dd()
Application.Calculation = xlManual
Dim ws As Worksheet
ActiveWorkbook.RefreshAll
For Each ws In Worksheets
ws.Calculate
MsgBox ws.Name & " Wurde berechnet"
ws.Application.Wait (Now + TimeValue("0:00:01"))
Next
MsgBox "Ende"
End Sub

Anzeige
AW: Makro Tabellenblätter nacheinander berechnen
15.07.2016 10:52:24
UweD
Hallo
hier mal ein Beispiel mit einfachen Formeln
Sub hdhdh()
    Dim i&
    For i = 1 To ActiveWorkbook.Sheets.Count
        Sheets(i).Range("A1").Formula = "=SUM(B1:C1)" 'Beispielformel 
        Sheets(i).Range("A2").Formula = "=A1-1" 'Beispielformel 
        'usw. 
        Application.Wait Now + TimeSerial(0, 0, 5) 'Wartet 5 Sekunden 
    Next
    MsgBox "Fertig"
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makros zur nacheinander Berechnung von Tabellenblättern in Excel


Schritt-für-Schritt-Anleitung

  1. Excel auf manuelle Berechnung setzen:

    • Öffne Excel und gehe zu Formeln > Berechnungsoptionen und wähle Manuell.
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Neues Modul hinzufügen:

    • Klicke auf Einfügen und wähle Modul.
  4. Makro-Code eingeben:

    • Füge den folgenden Code in das Modul ein, um alle Tabellenblätter nacheinander zu berechnen:
    Sub BerechneTabellenblaetter()
       Application.Calculation = xlManual
       Dim ws As Worksheet
       ActiveWorkbook.RefreshAll
       For Each ws In Worksheets
           ws.Calculate
           MsgBox ws.Name & " wurde berechnet"
           Application.Wait (Now + TimeValue("0:01:00")) ' 1 Minute warten
       Next
       MsgBox "Alle Tabellenblätter wurden berechnet"
    End Sub
  5. Makro ausführen:

    • Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle das Makro BerechneTabellenblaetter und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Problem: Die Berechnungen werden nicht aktualisiert.

    • Lösung: Stelle sicher, dass du ActiveWorkbook.RefreshAll in dein Makro eingefügt hast, um alle Datenverbindungen zu aktualisieren, bevor die Berechnungen stattfinden.
  • Problem: Das Makro läuft durch, aber die Werte werden nicht aktualisiert.

    • Lösung: Überprüfe, ob deine Datenbankverbindungen aktiv sind und die Formeln korrekt auf die Datenbank verweisen.

Alternative Methoden

  • Verwenden von Application.OnTime:

    • Anstelle von Application.Wait kannst du Application.OnTime verwenden, um die Ausführung des Makros zu einem späteren Zeitpunkt zu planen. So wird Excel nicht während der Wartezeit blockiert.
    Sub BerechneMitPause()
       Application.Calculation = xlManual
       Dim ws As Worksheet
       ActiveWorkbook.RefreshAll
       For Each ws In Worksheets
           ws.Calculate
           MsgBox ws.Name & " wurde berechnet"
           Application.OnTime Now + TimeValue("00:01:00"), "BerechneMitPause"
           Exit Sub
       Next
       MsgBox "Alle Tabellenblätter wurden berechnet"
    End Sub

Praktische Beispiele

  • Beispiel 1: Berechnung mit 5 Sekunden Pause

    Sub BerechneMitKurzerPause()
       Application.Calculation = xlManual
       Dim ws As Worksheet
       ActiveWorkbook.RefreshAll
       For Each ws In Worksheets
           ws.Calculate
           Application.Wait (Now + TimeValue("0:00:05")) ' 5 Sekunden warten
       Next
       MsgBox "Alle Tabellenblätter wurden berechnet"
    End Sub
  • Beispiel 2: Berechnung und Ausgabe des Blattnamens

    Sub BerechneUndZeigeNamen()
       Application.Calculation = xlManual
       Dim ws As Worksheet
       ActiveWorkbook.RefreshAll
       For Each ws In Worksheets
           ws.Calculate
           MsgBox ws.Name & " wurde berechnet"
           Application.Wait (Now + TimeValue("0:00:02")) ' 2 Sekunden warten
       Next
       MsgBox "Alle Tabellenblätter wurden berechnet"
    End Sub

Tipps für Profis

  • Optimierung der Berechnungszeit: Achte darauf, unnötige Berechnungen zu vermeiden, indem du nur die benötigten Blätter berechnest.
  • Debugging im VBA: Nutze den Debugger im VBA-Editor, um Probleme im Code zu identifizieren und zu beheben.
  • Verwendung von Error Handling: Implementiere Fehlerbehandlung in deinem Makro, um unerwartete Fehler während der Ausführung abzufangen.

FAQ: Häufige Fragen

1. Kann ich die Wartezeit im Makro anpassen? Ja, du kannst die Zeit in TimeValue("0:01:00") ändern, um die Wartezeit nach deinen Bedürfnissen anzupassen.

2. Warum wird mein Makro nicht ausgeführt? Stelle sicher, dass Makros in Excel aktiviert sind und dass du das richtige Makro ausgewählt hast, wenn du es ausführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige