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

Pause von 400 ms einlegen

Forumthread: Pause von 400 ms einlegen

Pause von 400 ms einlegen
31.10.2017 23:40:40
400
Hallo
wie kann man eine Pause von 400 ms im Makroablauf einlegen?
Ich kenne:
Application.Wait (Now + TimeValue("0:00:01"))
Ist das die Wartezeit von genau einer Sekunde oder bis zur nächsten Sekunde?
Außerdem ist da nur ein ganzzahliger Sekundenbereich möglich.
Noch eine Frage zur Pause:
Kann man das Programm solange anhalten, bis "Sendkeys" vollständig ausgeführt wurde? Habe den Eindruck, dass nach Absenden des Textes sofort weitergemacht wird und "Sendkeys" parallel ausgeführt wird. Das ist insbesondere dann schlecht, wenn ich zwei Sendkeys hintereinander loslasse.
LG, Barbara
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Pause von 400 ms einlegen
31.10.2017 23:55:31
400
Hallo,
ganz oben in ein Modul diese Sub.
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
im Code an entsprechendener Stelle
Sleep 400
Gruß Tino
AW: Pause von 400 ms einlegen
01.11.2017 09:09:40
400
Hallo Barbara,
aus dem Objektkatalog:
Sub SendKeys(String As String, [Wait])
Wenn du für Wait True einsetzt, dann Wartet Excel so lange bis SendKeys verarbeitet wurde. Das bezieht sich aber nur auf Excel, wenn du SendKeys auf ein anderes Programm anwendest, dann hat Wait keinen Einfluss.
Gruß
Nepumuk
Anzeige
;
Anzeige

Infobox / Tutorial

Pause von 400 ms in Excel VBA einlegen


Schritt-für-Schritt-Anleitung

Um eine Pause von 400 ms in einem Excel VBA-Makro einzulegen, kannst du die Sleep-Funktion aus der Windows-API verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Deklariere die Sleep-Funktion am Anfang des Moduls:

    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  4. An der Stelle, wo du die Pause einlegen möchtest, füge den folgenden Code ein:

    Sleep 400

Mit diesem Code wird das Makro für 400 Millisekunden pausiert.


Häufige Fehler und Lösungen

  • Problem: Das Makro wird nicht wie erwartet pausiert.

    • Lösung: Stelle sicher, dass die Sleep-Deklaration am Anfang des Moduls steht. Überprüfe auch, ob du die richtige Anzahl von Millisekunden angibst.
  • Problem: SendKeys wird nicht korrekt ausgeführt.

    • Lösung: Verwende SendKeys mit dem Wait-Parameter. Setze diesen auf True, um zu warten, bis der SendKeys-Befehl vollständig ausgeführt wurde:
    SendKeys "Dein Text", True

Alternative Methoden

Falls du keine API-Funktion verwenden möchtest, kannst du auch die Application.Wait-Funktion nutzen, jedoch hat diese Einschränkungen:

Application.Wait (Now + TimeValue("0:00:00.4"))

Beachte, dass Application.Wait keine Millisekunden unterstützt, daher ist die Verwendung von Sleep die bessere Option für kürzere Pausen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die Verwendung von Sleep und SendKeys demonstriert:

Sub BeispielPause()
    ' Pause von 400 ms
    Sleep 400

    ' SendKeys-Befehl mit Wartezeit
    SendKeys "Hallo, Welt!", True
    Sleep 400
    SendKeys "{ENTER}", True
End Sub

Dieses Makro sendet den Text "Hallo, Welt!" und wartet jeweils 400 ms zwischen den Befehlen.


Tipps für Profis

  • Verwende Sleep für präzise Pausen in deinem Makro, besonders wenn du mit SendKeys arbeitest.
  • Achte darauf, dass die Verwendung von SendKeys in anderen Anwendungen nicht immer zuverlässig ist. Teste deine Makros gründlich.
  • Nutze DoEvents, um die Benutzeroberfläche während längerer Wartezeiten reaktionsfähig zu halten.

FAQ: Häufige Fragen

1. Wie kann ich eine Pause von 1 Sekunde einlegen?
Du kannst einfach Sleep 1000 verwenden, um eine Pause von 1 Sekunde zu erzeugen.

2. Funktioniert SendKeys auch in anderen Anwendungen?
Ja, SendKeys kann auch in anderen Anwendungen verwendet werden, jedoch ist die Wartefunktion nur in Excel effektiv.

3. Gibt es eine Möglichkeit, die Wartezeit dynamisch zu setzen?
Ja, du kannst die Wartezeit in einer Variablen speichern und dann Sleep variableName verwenden.

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