Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Makro wird zu schnell ausgeführt
15.09.2020 14:49:25
Christian
Hallo Zusammen,
ich hoffe, dass meine Frage nicht in die Kategorie "dumme" Frage zulegen ist.
Ich habe in Excel per Makro die Berechnungsoptionen auf "manuell" gestellt:
Application.Calculation = xlCalculationManual
Anschließend wird eine UserForm geladen, deren Textfeld-Eingaben ich per Command-Button an 3 verschiedene Tabellenblätter übergebe, dort soll gerechnet und direkt die Ergebnisse wieder in die UserForm zurückgespielt werden.
Die Berechnung löse ich mit
Calculate
aus.
Seltsamerweise "rechnet Excel nicht zu Ende", sondern gibt einen Teil der Ergebnisse unberechnet wieder in die UserForm zurück.
Meine Frage ist also, ob es sein kann, dass die Abfolge im Makro zu schnell für die Fertigstellung der Berechnung in Excel ist?
Dabei habe ich bereits versucht, "Calculate" mit worksheets.select und activesheet.calculate etc. zu ersetzen. Innerhalb des Makros bleibt das erfolglos.
Existiert so ein Phänomen und wenn ja, gibt es Lösungen dazu? Mit einer Warteschleife, wie z.B.
Application.Wait Now + TimeSerial(0, 0, 2)
bin ich ebenfalls nicht weiter gekommen.
Vielen Dank im Voraus für jeden guten Gedanken und viele Grüße
Christian

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro wird zu schnell ausgeführt
15.09.2020 15:11:32
ChrisL
Hi Christian
Ich würde mal testen, ob Calculate isoliert (ohne Userform, Textboxen etc.) ausgeführt, zum richtigen Ergebnis führt.
Spontan vermute ich nämlich eher, dass die Reihenfolge der Berechnungen nicht stimmt z.B.
Blatt 1 = Quelle
Blatt 2 = Zwischenresultat
Blatt 3 = Endresultat
(wenn das Endresultat berechnet wird, bevor das Zwischenresultat berechnet wurde, stimmt das Ergebnis natürlich nicht)
Die Neuberechnung kannst du auch gezielt nach einzelnen Tabellen, Bereichen ausführen:
https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.calculate(method)
Vielleicht hilft es auch auf xlCalculationSemiautomatic umzuschalten.
https://docs.microsoft.com/en-us/office/vba/api/excel.xlcalculation
cu
Chris
Anzeige
AW: Makro wird zu schnell ausgeführt
15.09.2020 15:41:00
Christian
Hallo Chris,
vielen Dank für die schnelle Reaktion.
Leider ohne Erfolg. Ich habe das Makro innerhalb der UserForm vor der Rückgabe der berechneten Daten abgebrochen und in den Tabellenblättern auf "Neu Berechnen" geklickt. Es funktioniert alles.
Auch wenn ich NICHT auf manuelle Berechnung umstelle, kommt das Rechenergebnis, dass dann final richtig in den Tabellenblättern erscheint, nicht in der Userform an.
Der Befehl, der wohl "zu schnell" ausgeführt wird ist der folgende:
Worksheets("ZWISCHENSPEICHER").Range("ZWISCHENSPEICHER_RANGE").Value = Worksheets("ZWISCHENSPEICHER RAM").Range("ZWISCHENSPEICHER_RAM_RANGE").Value
Hier werden anscheinend die Daten aus dem Tabellenblatt ZWISCHENSPEICHER RAM eher entnommen als diese dort zu Ende berechnet sind. Die UserForm speist sich dann aus dem ZWISCHENSPEICHER.
Ich bin echt ratlos.
Viele Grüße
Christian
Anzeige
AW: Makro wird zu schnell ausgeführt
15.09.2020 15:51:55
Christian
AW: Makro wird zu schnell ausgeführt
15.09.2020 15:55:38
peterk
Hallo
Füge einmal ein "DoEvents" in Dein Makro ein (vielleicht hilfts)
Peter
AW: Makro wird zu schnell ausgeführt
15.09.2020 16:26:48
MatthiasG
Hallo,
oder, falls ein einfach DoEvents nicht reicht, eine Schleife:

Do
DoEvents
Loop Until Application.CalculationState = xlDone
Gruß Matthias
AW: Makro wird zu schnell ausgeführt
15.09.2020 16:30:16
ChrisL
Hi
OK, nochmal getestet.
Inzwischen glaube ich es hat nichts mit der Neuberechnung zu tun, sondern mit der Übernahme in die TextBox (Repaint war somit kein schlechter Gedanke).
Ich habe es jetzt mal wie folgt neu gesetzt:
With UserForm1.TextBox1
.ControlSource = ""
.ControlSource = "Tabelle1!A1"
End With
Allerdings solltest du die TextBox gar nicht mit einem Formelergebnis via ControlSource verknüpfen. Textbox und Zelle aktualisieren sich ja grundsätzlich gegenseitig. Im Moment, wo du ControlSource neu setzt, wird die Formel mit dem Textbox Inhalt überschrieben.
Warum verzichtest du nicht ganz auf ControlSource und übernimmst einfach mit Textbox1 = Range(x)
cu
Chris
Anzeige
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:24:08
Christian
Ich habe einen Weg gefunden. Eure Hinweise haben dabei sehr geholfen. Vielen Dank und viele Grüße,
Christian
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:24:10
Christian
Ich habe einen Weg gefunden. Eure Hinweise haben dabei sehr geholfen. Vielen Dank und viele Grüße,
Christian
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:24:10
Christian
Ich habe einen Weg gefunden. Eure Hinweise haben dabei sehr geholfen. Vielen Dank und viele Grüße,
Christian
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:24:11
Christian
Ich habe einen Weg gefunden. Eure Hinweise haben dabei sehr geholfen. Vielen Dank und viele Grüße,
Christian
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:24:13
Christian
Ich habe einen Weg gefunden. Eure Hinweise haben dabei sehr geholfen. Vielen Dank und viele Grüße,
Christian
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:24:14
Christian
Ich habe einen Weg gefunden. Eure Hinweise haben dabei sehr geholfen. Vielen Dank und viele Grüße,
Christian
Anzeige
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:29:26
ChrisL
Hi
Congrats...
Würde mich brennend interessieren, welcher Weg dies ist (nur grob). Vielleicht kann ich ja was dazu lernen.
cu
Chris
AW: Makro wird zu schnell ausgeführt
15.09.2020 17:32:26
Christian
Ich bin tatsächlich wie von Dir vorgeschlagen vorgegangen, was ein wenig zeitaufwendig war, da ich 3 Händevoll Textboxen verwende. Aber scheinbar habe ich damit den Rechenfehler umgehen können:
With UserForm1.TextBox1
.ControlSource = ""
.ControlSource = "Tabelle1!A1"
End With
Daher DANKE!
AW: Makro wird zu schnell ausgeführt
15.09.2020 18:31:28
ChrisL
Hi Christian
Danke für die Rückmeldung. Freut mich.
cu
Chris

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige