Excel VBA Sleep-Funktion zum Anhalten Ihres Makrocodes

Inhaltsverzeichnis

Excel VBA Sleep-Funktion

Die VBA-Sleep- Funktion ist eine Windows-Funktion, die unter Windows-DLL-Dateien vorhanden ist und verwendet wird, um die Ausführung der Makroprozedur für eine bestimmte Zeitspanne zu stoppen oder anzuhalten, nachdem eine bestimmte Zeitspanne, in der 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 fortsetzen. Wir können dies in VBA mithilfe der SLEEP-Funktion tun.

Was macht die VBA-Schlaffunktion?

SCHLAFEN, wie der Name schon sagt: "Schlaf für einige Zeit", "Ruhe für einige Zeit", "Pause für eine Zeit", Pause für einige Zeit "usw. 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. Vielmehr haben wir eine Funktion namens Sleep als Windows-Funktion. Durch Eingabe eines speziellen Satzes von Codes können wir diese Funktion tatsächlich in VBA aufrufen. Tatsächlich handelt es sich um eine Funktion, die in Windows-DLL-Dateien vorhanden 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 öffentlich deklarieren PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Für 64-Bit-Versionen von Excel #Else 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.

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 Variable StartTime den Wert der Funktion TIME 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 gesagt, der Code wird in Millisekunden angehalten, sodass er 10 Sekunden lang angehalten wird. Wir müssen 10000 Millisekunden verwenden.

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 sehen wir die Makro-Startzeit, 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 nach 10 Sekunden Wartezeit die aktuelle Uhrzeit.

Jetzt können Sie sehen, dass das Makro um 10:54:14 begann und um 10:54:24 endete, dh genau der 10-Sekunden-Unterschied ist da. In diesen 10 Sekunden unterbricht VBA die Ausführung des Codes.

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.

Verwenden Sie den folgenden Code, um die genaue Zeit zu verfolgen.

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 der Escape-Schlüssel funktioniert nicht.

Interessante Beiträge...