Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife x sekunden laufen lassen

Forumthread: Schleife x sekunden laufen lassen

Schleife x sekunden laufen lassen
Fettertiger
Hallo Experten,
ich stehe heute wieder auf dem Schlauch und Google hilft mir irgendwie auch nicht weiter, obwohl die Aufgabe vermutlich Pipifax für Euch ist:
Ich möchte eine Schleife nach diesem Muster laufen lassen:
Sub test()
Endzeit = now + timevalue("00:00:05")
Do until x=y
if now > endzeit then exit do
mach_irgendwas
loop
End Sub
Das entscheidende daran ist, dass die Schleife verlassen wird, falls sie länger als 5 Sekunden läuft. Bei mir läuft die Schleife allerdings ewig. Vergleiche ich die Werte während dem debuggen, dann zeigt mir das Watch Window für die Endzeit bspw: 40559 , für now allerdings 13:05:04. Ich muss also beide Werte irgendwie in ein einheitliches Format überführen.
Hat jemand einen Vorschlag?
Danke und Gruss
Theo
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Schleife x sekunden laufen lassen
24.02.2011 13:28:05
Hajo_Zi
Hallo The,
vielleich reicht es, wen Du die Variable Definierst as Date.

AW: Schleife x sekunden laufen lassen
24.02.2011 13:33:09
Fettertiger
Hallo Hajo,
wie gesagt, ich stand scheinbar wirklich auf dem Schlauch, denn
Dim Endzeit as Date
hat das Problem gelöst!
Vielen Dank für die Lösung!!!
Gruss
Theo
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Schleifen in Excel VBA: So lässt Du eine Sekundenschleife laufen


Schritt-für-Schritt-Anleitung

Um eine Schleife in Excel VBA für eine bestimmte Dauer laufen zu lassen, kannst Du das folgende Muster verwenden. In diesem Beispiel wird die Schleife so konfiguriert, dass sie nach 5 Sekunden endet:

Sub test()
    Dim Endzeit As Date
    Endzeit = Now + TimeValue("00:00:05")
    Do Until x = y
        If Now > Endzeit Then Exit Do
        ' mach_irgendwas
    Loop
End Sub

Wichtig ist, dass Du die Variable Endzeit als Date definierst. Dadurch wird sichergestellt, dass die Zeitvergleiche korrekt durchgeführt werden.


Häufige Fehler und Lösungen

Ein häufiger Fehler beim Arbeiten mit Schleifen in VBA ist die falsche Definition der Variablen. Wenn Du die Endzeit nicht als Date definierst, kann es zu unerwarteten Ergebnissen kommen.

Lösung: Stelle sicher, dass Du die Variable wie folgt definierst:

Dim Endzeit As Date

Wenn Du diese Definition vergisst, wird die Schleife möglicherweise nicht wie gewünscht beendet.


Alternative Methoden

Falls Du eine andere Möglichkeit suchst, eine Sekundenschleife zu implementieren, könntest Du auch eine Timer-Funktion verwenden. Hier ist ein Beispiel, wie Du eine einfache Schleife ohne feste Zeitbegrenzung implementieren kannst:

Sub TimerSchleife()
    Dim Startzeit As Double
    Startzeit = Timer
    Do While Timer < Startzeit + 5
        ' mach_irgendwas
    Loop
End Sub

Diese Methode nutzt die Timer-Funktion, um die Zeit in Sekunden zu messen. Beachte, dass Timer die Anzahl der Sekunden seit Mitternacht zurückgibt.


Praktische Beispiele

Hier ist ein praktisches Beispiel, bei dem eine Nachricht alle 1 Sekunde angezeigt wird, bis 5 Sekunden vergangen sind:

Sub NachrichtSchleife()
    Dim Endzeit As Date
    Endzeit = Now + TimeValue("00:00:05")
    Do Until Now > Endzeit
        MsgBox "Das ist eine Nachricht!"
        Application.Wait (Now + TimeValue("00:00:01"))
    Loop
End Sub

In diesem Beispiel wird eine Nachricht angezeigt und die Schleife wartet jeweils 1 Sekunde, bevor sie die nächste Nachricht anzeigt.


Tipps für Profis

  • Verwende Application.Wait, um die Ausführung für eine bestimmte Zeit zu pausieren. Dies kann die CPU-Last verringern, wenn Deine Schleife etwas länger dauert.
  • Achte darauf, dass Du die Schleifenbedingung so formulierst, dass sie nicht in eine Endlosschleife gerät. Teste immer mit kleinen Zeitintervallen.
  • Wenn Du komplexere Logik verwendest, überlege, ob Du die Schleife in eine separate Funktion auslagern kannst, um die Lesbarkeit Deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich die Schleife anhalten, wenn ich eine bestimmte Bedingung erfülle?
Du kannst eine Bedingung innerhalb der Schleife prüfen und dann Exit Do verwenden, um die Schleife zu beenden.

2. Was passiert, wenn die Schleife länger als die festgelegte Zeit läuft?
Wenn Du die Endzeit korrekt definierst und die Bedingung in der Schleife prüfst, sollte die Schleife innerhalb der festgelegten Zeit beendet werden. Achte darauf, die Zeit richtig zu vergleichen.

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