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

Berechnen im Makro kompl. ausführen dann erst weit

Forumthread: Berechnen im Makro kompl. ausführen dann erst weit

Berechnen im Makro kompl. ausführen dann erst weit
27.06.2006 12:41:29
HorstH
Hallo nette Leute im Forum,
habe im sheet aufwändige Summenmatrizen, die ca. 9 min zum berechnen brauchen. Befehle, die nach den Summenmatrizen kommen, bringen die Berechnungen zum Abbruch (z. B. Value nach Ausrechnung/Formel in Wert usw.) Was bzw. wie macht man das, dass erst alle Berechnungen zuende geführt werden und dann erst die nächsten Schritte im Makro vollzogen werden (also Formeln reinschreiben, Berechnen, Formeln in Werte, Speichern usw.) Recherche ergab nichts. Wer kann mit hier helfen? Blocke bislang mit MsgBox ab, es sollte aber alles ohne User ablaufen. Danke für jede Hilfe.
Gruß
Horst
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnen im Makro kompl. ausführen dann erst weit
27.06.2006 15:13:00
K.Rola
Hallo,
ungetestet:

Sub versiv()
'Dein Code
Do While Application.CalculationState <> 0
Loop
'Dein weiterer Code
End Sub

Gruß K.Rola
AW: Berechnen im Makro kompl. ausführen dann erst weit
27.06.2006 15:40:28
HorstH
Hallo K.Rola,
musste erst einmal laufen lassen: Danke - bekomme aber leider eine Fehlermeldung, dass das Objekt die Eigenschaft nicht unterstützt: Hab ich etwas verkehrt gemacht? Danke und Gruß. Horst
<pre>
Sub versiv()
..Formeln (läuft einwandfrei)
Application.Calculation = xlCalculationAutomatic
ActiveSheet.Calculate
Do While Application.CalculationState <> 0 ''' wird angemeckert
Loop
Cells.EntireColumn.AutoFit
Range("D3:D290").Value = Range("D3:D290").Value
Range("H3:AL290").Value = Range("H3:AL290").Value
End Sub</pre>
Anzeige
AW: Berechnen im Makro kompl. ausführen dann erst weit
27.06.2006 16:11:14
K.Rola
Hallo,
arghhhh, hab deine Excelversion nicht beachtet, gibt es erst ab Excel 2002.
Probier mal ein Application.Wait für einige Sekunden einzubauen.
Gruß K.Rola
AW: Berechnen im Makro kompl. ausführen dann erst weit
27.06.2006 16:36:09
HorstH
Hallo K.Rola,
habe Wait mit 10 min belegt (bislang 9 für Berechnung gemessen). Habe event=false + src update=false gesetzt - was kann ich noch für eine schnellere Berechnung machen? Hast du da noch Tipps? Die Matrizenformeln müssen nach erfolgter Berechnung in Werte gewandelt werden, da sonst beim Speichern über 11 MB, und dann bekomme ich die Datei nicht mehr auf. Also Close Savechanges kann ich nicht machen, um dann immer paketweise abzuarbeiten. Gibt es da noch Möglichkeiten? Infos wären prima! Danke und Gruß. Horst
Anzeige
AW: Berechnen im Makro kompl. ausführen dann erst weit
27.06.2006 17:23:37
K.Rola
Hallo,
um wieviele Formeln gehts denn?
Gruß K.Rola
AW: Berechnen im Makro kompl. ausführen dann erst weit
28.06.2006 16:38:06
HorstH
Hallo K.Rola,
bin gerade nur 30 Minuten für heute im Büro - zuhause kein Internet. Melde mich morgen früh und sende dir eine Probe der Tabellen mit den .bas. Danke für dein Interesse! Vielleicht schaust du dir's dann einmal an und kannst sicherlich noch Verbesserungen nennen. Bin Anfänger und lerne gerade VB/VBA. Danke und Gruß aus Bremen. Horst
Anzeige
AW: Berechnen im Makro kompl. ausführen dann erst weit
29.06.2006 14:53:12
HorstH
Hallo K.Rola,
auf deine Nachfrage hin stelle ich eine Datei ein, der ich ein Infosheet für dich beigefügt habe. Anzahl der Zielzellen ist 18.560 - als Anfänger VB/VBA habe ich die Würze der Kürze noch nicht so drauf (wenige Wochen). Vielleicht schlägst du ja auch die Händer über'm Kopf zusammen. Aber ich bin wirklich für jede Bereicherung zu haben! Schau dir das doch bitte einmal an - als Profi hast du doch sicherlich rosa Salz für mein Gericht;-)) . Antwort würde mich sehr freuen!!
Danke und Gruß
Horst
https://www.herber.de/bbs/user/34743.zip

Die Datei https://www.herber.de/bbs/user/34744.zip wurde aus Datenschutzgründen gelöscht

Die Datei https://www.herber.de/bbs/user/34745.zip wurde aus Datenschutzgründen gelöscht

PS: Internet nur im Büro. 3 Dateien zusammentun.
Anzeige
AW: Berechnen im Makro kompl. ausführen dann erst weit
29.06.2006 19:35:39
K.Rola
Hallo,
puh, ganz schön komplex, ich kann mich aus Zeitgründen da nicht hineinversetzen.
Ich würde die Formeln scheibchenweise, wie du es ja auch in dem Code machst, einfügen,
einen Block berechnen lassen und diesen Block sofort in Werte umwandeln. Geht mit
Sicherheit schneller, als am Schluss alle Formeln berechnen zu lassen.
Gruß K.Rola
Anzeige
AW: Berechnen im Makro kompl. ausführen dann erst weit
30.06.2006 09:19:31
HorstH
Hallo K.Rola,
danke für Antwort. Kann man das mit einer Schleife vielleicht erledigen - so nach jeder Formel und ist das Wertesetzen dann nicht zu schnell und überholt das Ausrechnen? Mit wait könnte ich das zwar hinkriegen - aber wie würd man so eine schleife gestalten - bin ich noch nicht so sattelfest. Kann ich da nohc einne tipp bekommen? Danke und Gruß. Horst
Anzeige
;
Anzeige

Infobox / Tutorial

Makros in Excel effizient berechnen und verwalten


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass alle Berechnungen in Deinem Excel-Makro vollständig abgeschlossen sind, bevor die nächsten Schritte ausgeführt werden, kannst Du folgende Vorgehensweise nutzen:

  1. Makro erstellen: Öffne den VBA-Editor in Excel (drücke ALT + F11).

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Füge den folgenden VBA-Code ein:

    Sub versiv()
       ' Berechnungen durchführen
       Application.Calculation = xlCalculationAutomatic
       ActiveSheet.Calculate
    
       ' Warten bis die Berechnungen abgeschlossen sind
       Do While Application.CalculationState <> xlDone
           DoEvents
       Loop
    
       ' Weitere Schritte ausführen
       Cells.EntireColumn.AutoFit
       Range("D3:D290").Value = Range("D3:D290").Value
       Range("H3:AL290").Value = Range("H3:AL290").Value
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.

Diese Schritte sorgen dafür, dass alle Formeln berechnet werden, bevor Du mit der Umwandlung in Werte fortfährst.


Häufige Fehler und Lösungen

Einige Nutzer berichten von Fehlern beim Ausführen des Codes. Hier sind häufige Probleme und deren Lösungen:

  • Fehlermeldung: "Das Objekt unterstützt diese Eigenschaft nicht": Stelle sicher, dass Du die richtige Version von Excel verwendest. Einige Funktionen sind erst ab Excel 2002 verfügbar.
  • Berechnungen dauern zu lange: Überprüfe die Anzahl der Formeln in Deiner Tabelle. Möglicherweise kannst Du die Berechnungen optimieren, indem Du weniger komplexe Formeln verwendest.

Alternative Methoden

Es gibt mehrere Alternativen, um Makros effizient zu berechnen:

  • Verwendung von Application.Wait: Du kannst das Makro anhalten, um sicherzustellen, dass alle Berechnungen abgeschlossen sind. Beispiel:

    Application.Wait (Now + TimeValue("0:00:10")) ' 10 Sekunden warten
  • Teilweise Berechnung: Berechne nur bestimmte Bereiche der Tabelle und konvertiere diese sofort in Werte, um die Gesamtberechnung zu beschleunigen.


Praktische Beispiele

Hier ein Beispiel, wie Du eine Schleife verwenden kannst, um Formeln schrittweise zu berechnen und sie sofort in Werte umzuwandeln:

Sub SchrittweiseBerechnung()
    Dim i As Integer
    For i = 1 To 100 ' Beispiel für 100 Formeln
        Cells(i, 1).Formula = "=A" & (i - 1) & "+1" ' Beispiel-Formel
        Cells(i, 1).Value = Cells(i, 1).Value ' Sofort in Wert umwandeln
    Next i
End Sub

Tipps für Profis

  • Verwende DoEvents: Dies erlaubt Excel, während der Ausführung Deines Makros auf andere Ereignisse zu reagieren, was nützlich sein kann, um die Benutzeroberfläche reaktionsfähig zu halten.
  • Makros berechnen: Überlege, ob Du die Berechnungen in kleinere Blöcke aufteilen kannst, um die Gesamtzeit zu reduzieren.

FAQ: Häufige Fragen

1. Wie kann ich die Berechnungsgeschwindigkeit meines Makros erhöhen? Vermeide unnötige Berechnungen und konvertiere Formeln in Werte, sobald sie nicht mehr benötigt werden.

2. Gibt es eine Möglichkeit, alle Berechnungen in einem Makro zu stoppen? Ja, Du kannst Application.Calculation auf xlCalculationManual setzen, um die Berechnung zu steuern. Stelle sicher, dass Du nach der Beendigung des Makros wieder auf xlCalculationAutomatic zurücksetzt.

3. Wie kann ich Fehler im Makro vermeiden? Teste Dein Makro regelmäßig mit kleinen Datenmengen, bevor Du es auf größere Daten anwendest.

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