WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Wie kann ich, oder kann ich eine For-Schleife raufzählen lassen mit Verzögerung (http://www.wcm.at/forum/showthread.php?t=165011)

coolbininet 03.05.2005 14:28

Wie kann ich, oder kann ich eine For-Schleife raufzählen lassen mit Verzögerung
 
Hallo Leute!

Habe in VBA ein kleines Progrämmchen geschrieben und komme jetzt nicht weiter!

Dachte ich könnte mit der Wait-Methode die in einer For-Schleife gezählten Zahlen mit einer Pause von einer Sekunde ausgeben!

Geht das, bei mir nicht!

Hilfe!

Grüsse Coolbininet

testi 03.05.2005 17:30

Am Besten ist es, wenn du dir eine eigene Routine schreibst.
Wie z.B.:
Code:

Public Sub Pause(Zeit As Variant)
Zeit = CDec(Zeit)
Start = Timer
Anfang = 0
Do While Anfang < Zeit
Anfang = Timer - Start
DoEvents
Loop
End Sub

Dann kannst du die For-Next Schleife wie wie folgend pausieren:
Code:

For i= 1 to 324234
........
Pause 1 'Für 1 Sekunden Pause
Next i

mfG
Testi

jak 03.05.2005 18:59

Einfacher gehts mit wait (siehe VBA-Hilfe).

Jak

coolbininet 03.05.2005 20:38

Danke Euch für Eure Hilfe!
 
Ganz besonders möchte ich testi danken!

Kanst ma noch erklären, was in der Sub da gemacht wird?

Grüße

Coolbininet

Potassium 03.05.2005 21:54

Code:

Public Sub Pause(Zeit As Variant) 'Variable Zeit wird als variablentyp variant übergeben
Zeit = CDec(Zeit) 'variable zeit wird in eine dezimalzal umgewandelt
Start = Timer 'Variable Start wird der wert von Timer zugewisen
Anfang = 0 'Variable Anfang wird 0 gesetzt
Do While Anfang < Zeit 'während variable anfang kleiner variable zeit ist soll er folgendes tun:
Anfang = Timer - Start 'Variable anfang ist variable timer weniger timer von anfang
DoEvents ' ka was das soll
Loop ' ende der do while schleife
End Sub 'ende des subs

hoffe es hilft ein wenig

jak 03.05.2005 23:30

Finds halt seltsam das man sich eine eigene Untermethode bastelt wenn das ganze mit:
Application.Wait(Now + TimeValue("0:00:01"))
erledigt ist...
:rolleyes:

Jak

flinx 04.05.2005 08:34

Zitat:

Original geschrieben von jak
Finds halt seltsam das man sich eine eigene Untermethode bastelt wenn das ganze mit:
Application.Wait(Now + TimeValue("0:00:01"))
erledigt ist...

IIRC hat DoEvents den Vorteil, daß man Eingaben während des Wartens verarbeiten kann, während dies mit Wait nicht der Fall ist. Bspw. Kann man das 'Warten mittels Wait'-Makro im Editor nicht durch Abbrechen beenden, das mit DoEvents hingegen schon. Bitte um Korrektur, falls das falsch sein sollte :).

jak 04.05.2005 12:40

Ja, der Nachteil ist, das wait Excel unterbricht. Die Schleife ist aber auch nicht sonderlich schön (verhindert IMHO das der Prozessor in wait oder sleep Modi geht). Man könnte es auch mit OnTime machen (dann hat man in der Schleife einen Aufruf eines Unterprogramms).

Jak

coolbininet 07.05.2005 10:17

Hallo nochmal!

Kann ich nun mit dieser Pause Sub auch nur um ein 10el oder ein 100el einer Sekunde verzögern, wenn nein, bräuchte ich da auch eine Möglichkeit.

Grüße

Coolbininet

jak 07.05.2005 11:04

Das ist ein wirklicher Vorteil von timer, das er unter Windows auch Bruchteile von Sekunden angibt (soweit ich das gesehen habe bis zu 100stel). An sich ist timer+0.01 also erlaubt. Probier einfach mal aus was passiert wenn du "Pause 0.1" eingibst.

Jak


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag