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

do loop nach 10 Sekunden abbrechen

Forumthread: do loop nach 10 Sekunden abbrechen

do loop nach 10 Sekunden abbrechen
11.11.2012 11:30:55
Michael
Hallo Miteinander!
Ich möchte gerne eine Schleife nach 10 Sekunden abbrechen, da kein Ergebnis mehr geliefert wird. Ich verwende derzeit
Do
'wait
DoEvents
Loop Until Dir(Ablage) ""
Wie kann ich jetzt ein exit do nach 10 Sekunden erreichen?
Vielen Dank für Eure Hilfe.
VG Michael H

Anzeige

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

Betreff
Datum
Anwender
Anzeige
do loop nach 10 Sekunden abbrechen
11.11.2012 11:38:31
Anton
Hallo Michael,
so vllt:
  sngStart = Timer
Do
'wait
DoEvents
If Timer - sngStart > 10 Then Exit Do
Loop Until Dir(Ablage)  ""

mfg Anton

AW: do loop nach 10 Sekunden abbrechen
11.11.2012 11:42:26
Michael
Manchmal ist es so einfach. Danke!
VG Michael H

ist vielleicht nicht so wichtig...
11.11.2012 13:54:42
Tino
Hallo,
aber wenn der Code zwischen 23:59:55 und 00:00:05 läuft geht’s mit Timer nicht.
Timer fängt ab 0Uhr wieder bei 0 an und würde somit auch eine Endlosschleife erzeugen.
Alternativ mit Now arbeiten, also mit Datum und Uhrzeit.
Beispiel:
Dim datExitTime As Date
datExitTime = Now + TimeSerial(0, 0, 10)
Do
If Now > datExitTime Then Exit Do
Loop
Gruß Tino
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Do-Loop in Excel VBA nach 10 Sekunden abbrechen


Schritt-für-Schritt-Anleitung

Um eine Do-Loop in Excel VBA nach 10 Sekunden abzubrechen, kannst du folgenden Code verwenden:

Dim sngStart As Single
sngStart = Timer
Do
    'wait
    DoEvents
    If Timer - sngStart > 10 Then Exit Do
Loop Until Dir(Ablage) <> ""

In diesem Beispiel wird ein einfacher 10 Sekunden Timer verwendet, der den Loop beendet, wenn die Bedingung erfüllt ist oder die Zeit abgelaufen ist. Achte darauf, dass der DoEvents Befehl es erlaubt, dass andere Prozesse während der Schleife weiterlaufen.


Häufige Fehler und Lösungen

Fehler 1: Endlosschleife

Lösung: Stelle sicher, dass die Bedingung in deiner Schleife richtig gesetzt ist. Wenn du nur auf den Timer achtest, kann es zu einer Endlosschleife kommen, wenn der Timer nach 00:00:00 zurückgesetzt wird.

Fehler 2: Timer funktioniert nicht wie gewünscht

Lösung: Verwende anstelle von Timer die Now-Funktion, um ein präziseres Zeitmanagement zu erreichen, besonders wenn der Code zwischen 23:59:55 und 00:00:05 läuft.


Alternative Methoden

Wenn du die Endlosschleife mit einem 10 Sekunden Timer abbrechen möchtest, kannst du auch die Now Funktion verwenden. Hier ein Beispiel:

Dim datExitTime As Date
datExitTime = Now + TimeSerial(0, 0, 10)
Do
    If Now > datExitTime Then Exit Do
Loop

Diese Methode ist besonders nützlich, da sie nicht von der Timer-Funktion abhängt und auch den Übergang zur nächsten Stunde berücksichtigt.


Praktische Beispiele

  1. Beispiel 1: 10 Sekunden Timer mit DoEvents
Sub TimerBeispiel()
    Dim sngStart As Single
    sngStart = Timer
    Do
        DoEvents
        If Timer - sngStart > 10 Then Exit Do
    Loop
    MsgBox "Timer abgebrochen!"
End Sub
  1. Beispiel 2: Verwendung von Now für präzise Zeitkontrolle
Sub TimerMitNow()
    Dim datExitTime As Date
    datExitTime = Now + TimeSerial(0, 0, 10)
    Do
        If Now > datExitTime Then Exit Do
    Loop
    MsgBox "Timer abgebrochen!"
End Sub

Tipps für Profis

  • Verwende DoEvents, um sicherzustellen, dass Excel während des Wartens nicht hängt.
  • Teste deinen Code in verschiedenen Zeitfenstern, um die Funktionsweise des Timers und die Vermeidung von Endlosschleifen sicherzustellen.
  • Du kannst auch die Application.Wait Methode verwenden, um eine einfachere Wartezeit zu implementieren, wenn du nicht auf Bedingungen prüfen musst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Schleife nicht zu lange läuft? Verwende einen Timer, wie im obigen Beispiel beschrieben, um die Schleife nach 10 Sekunden zu beenden.

2. Was ist der Unterschied zwischen Timer und Now in VBA? Timer gibt die Anzahl der Sekunden seit Mitternacht zurück, während Now das aktuelle Datum und die Uhrzeit zurückgibt. Now ist nützlich, um Zeiträume zu überwachen, die über Mitternacht hinausgehen.

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