VBA-Schlaffunktion

Excel VBA Sleep-Funktion

Die VBA-Sleep- Funktion ist eine Windows-Funktion, die unter Windows-DLL-Dateien vorhanden ist. Sie wird verwendet, um die Ausführung der Makroprozedur für eine bestimmte Zeitspanne zu stoppen oder anzuhalten, nachdem eine bestimmte Anzahl von Programmen das Programm fortgesetzt werden kann.

Es gibt Situationen, in denen wir unseren Makroausführungsprozess anhalten müssen, um andere Aufgabensätze auszuführen. Andere Aufgabensätze können Teil unserer Codierung oder Teil einer anderen Makroprozedur sein oder für das aktuelle Excel-Makro eingegeben werden. Wie können Sie das Programm anhalten, während es ausgeführt wird? Wir können den vom Benutzer festgelegten Verfahrenscode für einige Zeit anhalten und danach das Programm wieder aufnehmen. Wir können dies in VBA mithilfe der SLEEP-Funktion tun.

Was macht die VBA-Schlaffunktion?

SCHLAFEN, da der Name selbst "für einige Zeit schlafen", "für einige Zeit ruhen", "für einige Zeit pausieren", für einige Zeit Pause "usw. sagt. Mit der Schlaffunktion können Benutzer unseren Makrocode für Millisekunden pausieren. Auf diese Weise können wir den Prozess des Makrocodes verzögern.

Wenn Sie der Meinung sind, dass wir eine integrierte Funktion namens SLEEP haben, liegen Sie falsch, da es in VBA keine solche Funktion gibt, sondern eine Funktion namens Sleep als Windows-Funktion. Durch Eingabe eines speziellen Codesatzes können wir diese Funktion tatsächlich in VBA aufrufen. Tatsächlich handelt es sich um eine Funktion, die in Windows-DLL-Dateien enthalten ist. Daher müssen wir die Nomenklatur der API vor dem Start der Unterroutine in vba deklarieren.

Unten ist der VBA-Code.

Code:

# Wenn VBA7, dann Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Für 64-Bit-Versionen von Excel # Sonst Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Für 32-Bit-Versionen von Excel # End If 

Kopieren Sie das Obige und fügen Sie es in Ihr Modul ein, bevor Sie mit dem Schreiben der Makrocodes beginnen. Es sollte so in Ihr Modul eingefügt werden.

Beispiel

Bevor ich Ihnen die Art und Weise des Schreibens des Codes zeige, möchte ich Ihnen noch etwas mehr über die Schlaffunktion erzählen. Es verzögert den Prozess in Millisekunden. 1 Sekunde entspricht also 1000 Millisekunden. Wenn Sie 10 Sekunden pausieren möchten, sollten es 10000 Millisekunden sein.

Sie können diese VBA Sleep Excel-Vorlage hier herunterladen - VBA Sleep Excel-Vorlage

Beispiel 1

Erstellen Sie einen Makronamen, sobald der API-Code vor dem Start der Sub-Prozedur eingefügt wurde.

Code:

# Sub Sleep_Example1 () End Sub 

Deklarieren Sie zwei Variablen als Zeichenfolge.

Code:

 Dim StartTime As String Dim EndTime As String 

Weisen Sie für die StartTime- Variable den Wert der TIME-Funktion zu. Hinweis: TIME in der Excel-Funktion gibt die aktuelle Zeit zurück.

Code:

StartTime = Zeit

Jetzt werden wir diese Nachricht im Meldungsfeld VBA anzeigen.

Code:

StartTime = Zeit MsgBox StartTime

Jetzt halten wir den Code mit der Schlaffunktion für 10 Sekunden an. Wie ich bereits sagte, wird der Code in Millisekunden angehalten. Um 10 Sekunden anzuhalten, müssen 10000 Millisekunden verwendet werden.

Code:

 Sub Sleep_Example1 () Dim StartTime As String Dim EndTime As String StartTime = Zeit MsgBox StartTime Sleep (10000) End Sub 

Verwenden Sie nun die zweite Variable EndTime und weisen Sie die aktuelle Zeit zu.

Code:

 Sub Sleep_Example1 () Dim StartTime As String Dim EndTime As String StartTime = Zeit MsgBox StartTime Sleep (10000) EndTime = Zeit MsgBox EndTime End Sub 

Jetzt enthalten zwei Variablen StartTime und EndTime die Start- und Endzeit des Makros. Führen Sie dieses Makro aus. Zuerst wird die Makrostartzeit angezeigt, dh die aktuelle Zeit in Ihrem System.

Klicken Sie auf OK, es wird 10 Sekunden lang schlafen. Sie können das Puffersymbol sehen.

Nach 10 Sekunden wird der Code fortgesetzt, sodass die Endzeit angezeigt wird, dh nachdem 10 Sekunden gewartet wurde, wie aktuell die aktuelle Zeit ist.

Jetzt können Sie sehen, dass das Makro um 10:54:14 Uhr gestartet und um 10:54:24 Uhr beendet wurde, dh genau der Unterschied von 10 Sekunden ist vorhanden. In diesen 10 Sekunden hält VBA den Code an.

Beispiel 2 - Schlaffunktion in Schleifen

Schlaf wird am besten mit Schleifen in VBA verwendet. Zum Beispiel möchte ich Seriennummern von 1 bis 10 mit der Do while-Schleife in VBA einfügen.

Nach dem Einfügen der einen Nummer sollte mein Code 3 Sekunden warten. Wenn die Schleife also 10 Mal ausgeführt wird, sollten es insgesamt 30 Sekunden sein.

Code:

 Sub Sleep_Example2 () Dim k As Integer k = 1 Do While k <= 10 Zellen (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 Millisekunden sind 1 Sekunde, also entspricht 3000 3 Sekunden Loop End Sub 

Führen Sie diesen Code aus, und Sie müssen mindestens 30 Sekunden warten, um den Vorgang abzuschließen.

Um die genaue Zeit zu verfolgen, verwenden Sie den folgenden Code.

Code:

 Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Ihr Code hat begonnen um" & StartTime k = 1 Do While k <= 10 Zellen (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 Millisekunden sind 1 Sekunde, also entspricht 3000 3 Sekunden. Loop EndTime = Time MsgBox "Ihr Code endete um" & EndTime End Sub 

Dieser Code zeigt Ihnen 2 Meldungsfelder an, das erste zeigt die Startzeit und das zweite die Endzeit.

Hinweis: Während Sie diesen Code ausführen, können Sie Excel nicht verwenden, auch wenn die Escape-Taste nicht funktioniert.