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

Programmverzögerung in Millisekunden

Forumthread: Programmverzögerung in Millisekunden

Programmverzögerung in Millisekunden
Pepi
Hallo zusammen
ich habe eine rekursive Schleife, die ich mit einer Zeitverögerung versehen möchte, damit man sieht wie der Prozess abläuft.
Die Funktion Wait kann nur Sekunden oder länger, die Funktion Sleep läuft auf meinem Rechnen (64bit) nicht
wer weiss was?
vielen Danke
mfg
Pepi
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Programmverzögerung in Millisekunden
11.05.2012 11:44:24
Rudi
Hallo,
die Funktion Sleep läuft auf meinem Rechnen (64bit) nicht
Du musst sie auch für Win64 deklarieren.
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Gruß
Rudi
Sleep bei 64 Bit (Betreffänderung für Archiv) owT
11.05.2012 18:22:53
Reinhard

Anzeige
;
Anzeige

Infobox / Tutorial

Programmverzögerung in Millisekunden


Schritt-für-Schritt-Anleitung

Um eine Programmverzögerung in Millisekunden in Excel VBA einzufügen, kannst du die Sleep-Funktion verwenden. Hier sind die Schritte, um dies in einer 64-Bit-Version von Excel zu implementieren:

  1. Öffne den VBA-Editor mit ALT + F11.

  2. Füge ein neues Modul hinzu (Einfügen > Modul).

  3. Deklariere die Sleep-Funktion für 64-Bit wie folgt:

    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
  4. Verwende die Sleep-Funktion in deiner Subroutine. Beispiel:

    Sub VerzögerungBeispiel()
       Dim i As Integer
       For i = 1 To 10
           Debug.Print i ' Ausgabe im Direktfenster
           Sleep 1000 ' Warten für 1000 Millisekunden (1 Sekunde)
       Next i
    End Sub
  5. Führe die Subroutine aus, um die Verzögerung in Millisekunden zu sehen.


Häufige Fehler und Lösungen

  • Problem: Sleep funktioniert nicht in der 64-Bit-Version.

    • Lösung: Stelle sicher, dass du die Sleep-Funktion korrekt für 64-Bit deklariert hast. Siehe Schritt 3 in der Schritt-für-Schritt-Anleitung.
  • Problem: Die Verzögerung wird nicht wie erwartet ausgeführt.

    • Lösung: Überprüfe, ob du die richtigen Parameter an die Sleep-Funktion übergibst. Sleep benötigt Millisekunden als Eingabe.

Alternative Methoden

Wenn du die Sleep-Funktion aus verschiedenen Gründen nicht verwenden kannst, gibt es alternative Wege, um eine Verzögerung in Excel VBA zu implementieren:

  1. Die Wait-Funktion:

    Application.Wait (Now + TimeValue("0:00:01")) ' Warten für 1 Sekunde

    Beachte, dass Wait nur Sekunden unterstützt.

  2. Ein einfacher Timer: Ein Timer kann eine Art Schleife verwenden, um eine Verzögerung zu simulieren, obwohl dies weniger effizient ist.


Praktische Beispiele

Hier sind einige praktische Beispiele, die die Verwendung von Sleep und Wait in VBA zeigen:

  • Beispiel 1: Verwendung von Sleep für eine 2-Sekunden-Verzögerung:

    Sub BeispielSleep()
      Debug.Print "Start"
      Sleep 2000 ' 2 Sekunden warten
      Debug.Print "Ende"
    End Sub
  • Beispiel 2: Verwendung von Wait:

    Sub BeispielWait()
      Debug.Print "Start"
      Application.Wait (Now + TimeValue("0:00:02")) ' 2 Sekunden warten
      Debug.Print "Ende"
    End Sub

Tipps für Profis

  • Kombiniere Sleep mit Schleifen: Du kannst Sleep innerhalb von Schleifen verwenden, um eine verzögerte Ausgabe in Echtzeit zu simulieren.

  • Vorsicht bei langen Wartezeiten: Zu lange Verzögerungen können die Benutzeroberfläche einfrieren. Halte die Wartezeiten so niedrig wie möglich.

  • Debugging: Verwende das Fenster "Direkt" im VBA-Editor, um Ausgaben während der Wartezeiten zu überprüfen.


FAQ: Häufige Fragen

1. Wie kann ich die Verzögerungszeit in Millisekunden anpassen?
Ändere einfach den Wert, den du an Sleep übergibst. Zum Beispiel Sleep 500 für eine Verzögerung von 500 Millisekunden.

2. Funktioniert Sleep auch in 32-Bit-Versionen von Excel?
Ja, Sleep kann auch in 32-Bit-Versionen verwendet werden, aber die Deklaration wird ohne PtrSafe aussehen:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

3. Was ist der Unterschied zwischen Sleep und Wait?
Sleep pausiert das gesamte Programm für die angegebene Zeit, während Wait nur die Ausführung des Codes für Sekunden pausiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige