PDA

Vollständige Version anzeigen : Dauer einer Schleife in UF anzeigen und ständig aktuell


feliweb
18.08.2017, 10:30
Hallo,

ich würde gerne in einer Userform die Dauer einer Schleife anzeigen lassen.

In der Beispieldatei habe ich mein Problem nachgebaut.

Die verschiedenen i dauern unterschiedlich lange. Die Zeit wird erst aktualisiert, wenn eine Schleife durchlaufen ist.

Ich hätte gerne, dass die Zeit dauerhaft läuft. Ist das möglich?

Viele Grüße

feliweb

Muller2
18.08.2017, 11:26
Hallo,

klar, geht alles:
<pre style='background-color:#FFFFFF;border:thin solid #FF8080; padding:12px 24px; margin-left:12px; color:#000000'><span style='color:#0000EE'>Option</span> <span style='color:#0000EE'>Explicit</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Declare</span> <span style='color:#0000EE'>Sub</span> Sleep <span style='color:#0000EE'>Lib</span> <span style='color:#FF0000'>&quot;kernel32.dll&quot;</span> ( _ <span style='color:#0000EE'>ByVal</span> dwMilliSeconds <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span>) <span style='color:#0000EE'>Private</span> mblnTerminate <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Boolean</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Sub</span> CommandButton1_Click() <span style='color:#0000EE'>Dim</span> t0_total <span style='color:#0000EE'>As Date</span> <span style='color:#0000EE'>Dim</span> i <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span>, s <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> t0_total = Now s = <span style='color:#DDAA00'>0</span> lb_status_total = s & <span style='color:#FF0000'>&quot;/&quot;</span> & <span style='color:#DDAA00'>25</span> <span style='color:#0000EE'>For</span> i = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>To</span> <span style='color:#DDAA00'>25</span> <span style='color:#0000EE'>If</span> mblnTerminate <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Exit</span> <span style='color:#0000EE'>For</span> DoEvents <span style='color:#0000EE'>Call</span> Sleep(<span style='color:#DDAA00'>1000</span>&) lb_laufzeit_total.Caption = <span style='color:#FF0000'>&quot;Laufzeit: &quot;</span> & Format(Now - t0_total, <span style='color:#FF0000'>&quot;hh:mm:ss&quot;</span>) lb_status_total.Caption = i & <span style='color:#FF0000'>&quot;/&quot;</span> & <span style='color:#DDAA00'>25</span> <span style='color:#0000EE'>Next</span> i <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Sub</span> UserForm_Terminate() mblnTerminate = <span style='color:#0000EE'>True</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span><br><br><hr style='color: #FF8080; background-color: #3300B2; height: 1.5px;' /><br><br><p style='font-size: 8px; font-family: Verdana; text-align: right;'><a href='http://www.rholtz-office.de/index.php?index=vbahtml' target='_blank'>VBA/HTML - CodeConverter f&uuml;r Office-Foren</a><br>AddIn f&uuml;r Excel/Word 2000-2010 - komplett in VBA geschrieben von <a href='http://www.office-loesung.de/viewprofile19265.php'>Lukas Mosimann</a><br />Projektbetreuung durch mumpel</p><br /><br />Code erstellt und getestet in Office 14</pre>
Gruß, Muller2

feliweb
18.08.2017, 11:35
Hi,

Danke für die Antwort.

Allerdings ist das nicht ganz das was ich gesucht habe, weil sich die Uhr ja in deinem Beispiel auch nur aktualisiert, wenn die Schleife zum nächsten i geht.

In deinem Beispiel dauert eine Schleife 1 sek, deshalb scheint es zu gehen. Allerdings wie in einem Beispiel (oder bei dir wenn man Sleep erhöht) dauert eine Schleife mal 5 sek, mal 10 sek und mal 5 Minuten...

Dann hängt die Uhr eben auch für genau diese Zeit.

VG

feliweb

Muller2
18.08.2017, 12:01
Hallo,

hmm, Du willst also eine Art Multitasking-Prozess, das geht wahrscheinlich nur mit sowas wie dem Api-Timer, den müsstest Du vorschalten und dann Deinen normalen Loop starten...

Gruß, Muller2

Klaus-Dieter
18.08.2017, 12:08
Hallo,

was ist denn das Ziel der Aktion?

feliweb
18.08.2017, 12:30
Hi,

also in den verschiedenen Schleifen werden andere Excelfiles geöffnet und berarbeitet.

Manche Schleifen dauern 2s andere 3-4h (je nach Datenvolumen)

Um den Endnutzer nicht zu verunsichern und ihm zu zeigen, dass das Programm noch läuft, würde ich sowas gerne einbauen.

Klaus-Dieter
18.08.2017, 16:07
Hallo,

so etwas hatte ich schon befürchtet. Anstelle einer Fortschrittsanzeige, würde ich lieber die Makros dahingehend optimieren, dass so lange Laufzeiten nicht entstehen.