Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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
Inhaltsverzeichnis

Zeit für Application.Calculate

Zeit für Application.Calculate
27.10.2022 19:22:23
Dieter
Moin aus Hamburg,
es geht um eine Optimierung, bei der in mehreren Schleifen Variable berechnet werden, die im jeweils nächsten loop wieder als Startwerte zur Verfügung stehen müssen.
Dabei wirken drei sehr umfangreiche Arbeitsblätter zusammen, und ein viertes Arbeitsblatt läuft als ein Interface, um je nach Verlauf der Optimierung neue Parameter zur Verfügung zu stellen. Übergeordnet ist ein Makro, in dem die Optimierungsstrategie abgebildet ist, und das den Arbeitsblättern die jeweiligen Parameter bereitstellt.
Die Applikation ist zeitkritisch, denn bevor die 'Application.Calculate's einer Schleife abgearbeitet sind, wird schon die nächste Schleife mit unvollständig berechneten Startwerten angestoßen. Zur Behebung habe ich nach jedem Calculate eine leere Schleife For I = 1 To 850 / Next I eingefügt. Die 850 hat sich als geeigneter Wert herausgestellt. Sie deckt die worst cases auch da ab, wo es je nach unvorhersehbarem Ablauf Optimierung definitv nicht nötig ist (unnötige Prozesszeit).
Probiert habe ich dies:
Application.Calculate
Do
DoEvents
Loop Until Application.CalculationState = xlPending
Funktioniert aber nicht, weil in den Tabellenblättern viele volatile Funktionen wie JETZT() stehen, weshalb die Do-Schleife nicht mehr verlassen wird.
'Wait' entfällt ebenfalls (s. leere Schleifen) und ist nicht unterhalb einer Sekunde auflösbar.
Bleibt m.E. nur noch 'Sleep', das wohl auf das Betriebssystem zugreift, wobei ich nicht weiß, wie das in den VBA Code zu integrieren ist und wie die Sleep-Zeit an 'Application.CalculationState' o.ä. gekoppelt werden kann.
Habt Ihre eine Idee oder einen Tipp?
Danke vorab
Dieter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeit für Application.Calculate
27.10.2022 19:34:08
onur
Und wozu genau brauchst du Jetzt() ?
AW: Zeit für Application.Calculate
27.10.2022 19:47:16
Dieter
Moin,
JETZT() stellt fest, ob alle für diesen Zeitpunkt erforderlichen Eingaben da sind.
Vielleicht sollte ich das durch HEUTE() ersetzen, weil ich nur die Auflösung für einen Tag brauche. So weit ich weiß, löst JETZT() bis in den Sekundenbereich auf, woduch die 'Do' Schleife nicht mehr verlassen wird. Mit HEUTE() sollte das nicht so sein.
Was meinst Du?
Dieter
AW: Zeit für Application.Calculate
27.10.2022 19:50:08
onur
Oder zumindestens Jetzt() mit Runden(Jetzt();3 oder 2) auf (ungefähr) Minuten "kastrieren".

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige