Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verzögerung mittels VBA

Verzögerung mittels VBA
16.08.2023 18:39:36
Euti
Guten Tag,
in meiner Arbeitsmappe möchte ich mittels VBA den Inhalt bestimmter Zellen aus Tabelle2 löschen und anschließend, mit einer geringen Verzögerung
von 1 - 2 Sekunden, zu Tabelle1 zurückspingen.
Löschen und Sprung zu Tabelle 1 - kein Problem.
Aber wie erreiche ich eine geringe Verzögerung?
Ich dachte schon mal, man könnte Excel mal schnell bis 100.000 zählen lassen oder so ??????
Gruß Euti

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

Betreff
Datum
Anwender
Anzeige
AW: Verzögerung mittels VBA
16.08.2023 19:05:26
daniel
Hi
kann man prinzipiell machen.
wenn du bis zu einer bestimmten Zahl zählen lässt, dann kann das auf unterschiedlichen Rechnern aber unterschiedlich lange dauern.
da gibt es natürlich andere Methoden, die die Zeit berücksichtigen.

die nächste Frage wäre, ob Excel in dieser Zeit einschlafen kann und nichts machen soll während der Anwender wartet, oder ob da noch was gemacht werden muss.

die einfachste Lösung wäre, ein WAIT Uhrzeit.
hier mal der Code für eine Sekunde ab Auslösung:
Application.Wait Now + TimeSerial(0, 0, 1)

Excel schläft dann bis zur angegebenen Uhrzeit sein.
Die Wartezeit kann man hier nur im Sekundentakt angeben. Bei kleinen Wartezeiten kann es sein, dass der Auslösezeitpunkt die Wartezeit beeinflusst
Wenn man sagt: Warte bis 18:21:45 und löst das um 18:21:44,9 aus, dann ist die Wartezeit und 1/10 Sekunde, löst man um 18:21:44,001 aus, wartet man eine ganze Sekunde.

eine andere Möglichkeit ist die Nutzung von TIMER.
dieser zählt die Sekunden ab 0 Uhr und zählt dabei auch in kleineren Schritten . Damit kann man die Wartezeit exakter bestimmen.
dim T as double

T = Timer + 1
Do Until Timer > T
Loop

man sollte das nur nicht über Mitternacht machen (dann müsste man das Datum mitnehmen)

Gruß Daniel

Anzeige
Verzögerung mittels VBA
16.08.2023 19:13:17
Nepumuk
Hallo,

ein Beispiel:

Option Explicit


Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)

Public Sub Test()
Call Sleep(2000) '2000 Millisekunden warten
End Sub

Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - Verzögerung mittels VBA


Inhaltsverzeichnis


Die Fragestellung


Du möchtest in einem VBA-Makro eine Verzögerung einbauen, sodass zwischen bestimmten Aktionen eine Pause entsteht.


Erläuterung des Problems {#erläuterung-des-problems}


In VBA gibt es keine native sleep-Funktion wie in anderen Programmiersprachen. Verzögerungen können jedoch nützlich sein, um sicherzustellen, dass externe Prozesse wie das Laden von Daten oder die Interaktion mit anderen Anwendungen abgeschlossen sind, bevor das Skript fortfährt.


Lösung des Problems {#lösung-des-problems}


Es gibt verschiedene Methoden, um eine Verzögerung in VBA zu implementieren. Eine der gebräuchlichsten ist die Verwendung der Wait-Methode des Application-Objekts:

Sub PauseMacro()
    ' Pausiert das Makro für 5 Sekunden
    Application.Wait (Now + TimeValue("0:00:05"))
End Sub

Eine andere Methode ist die Verwendung der Windows API-Funktion Sleep. Dazu musst du zuerst eine Deklaration am Anfang des Moduls einfügen:

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sub PauseMacro()
    ' Pausiert das Makro für 5 Sekunden (5000 Millisekunden)
    Sleep 5000
End Sub

Beachte, dass PtrSafe und LongPtr für 64-Bit-Versionen von Office verwendet werden sollten. Für 32-Bit-Versionen kann es notwendig sein, diese zu entfernen oder durch Long zu ersetzen.


Anwendungsbeispiele aus der Praxis


  • Datenverarbeitung: Warte, bis eine externe Datenquelle vollständig geladen ist, bevor mit der Verarbeitung begonnen wird.
  • Benutzerinteraktion: Gib dem Benutzer Zeit, eine Nachricht zu lesen, bevor das Makro fortfährt.

Tipps


  • Verwende Verzögerungen sparsam, da sie die Ausführung des Makros blockieren und die Benutzererfahrung beeinträchtigen können.
  • Für längere Verzögerungen oder nicht-blockierende Pausen solltest du andere Ansätze wie das Überprüfen des Zustands eines Prozesses in einer Schleife in Betracht ziehen.

Verwandte Themenbereiche


  • VBA-Programmierung
  • Prozesssteuerung in Makros
  • Interaktion mit externen Anwendungen

Zusammenfassung


Die Implementierung einer Verzögerung in VBA kann über die Application.Wait-Methode oder die Windows API-Funktion Sleep erfolgen. Diese Funktionen sind nützlich, um die Ausführung eines Makros temporär anzuhalten. Es ist wichtig, die Verwendung von Verzögerungen zu optimieren, um die Effizienz des Makros nicht unnötig zu beeinträchtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige