Wstrzymanie VBA

Wstrzymaj kod VBA przed uruchomieniem

VBA Pause służy do wstrzymania wykonania kodu na określony czas, a do wstrzymania kodu w VBA używamy metody application.wait.

Kiedy budujemy duże projekty VBA po wykonaniu czegoś, być może trzeba będzie poczekać trochę czasu, aby wykonać inne zadania. W takich scenariuszach, jak zatrzymać kod makra, aby wykonać nasze zadanie? Możemy wstrzymać kod VBA na określony czas za pomocą dwóch funkcji, a są to „Wait” i „Sleep”.

Jak wstrzymać kod za pomocą metody oczekiwania?

„Wait” to funkcja, której używamy w VBA, aby utrzymać makro działające przez określony czas. Stosując tę ​​funkcję musimy wspomnieć, do jakiego czasu nasz kod ma czekać.

Możesz pobrać ten szablon VBA Pause Excel tutaj - VBA Pause Excel Template

Na przykład, jeśli wykonujesz kod o 13:00:00, jeśli podasz czas jako „13:15:00”, makro będzie działało przez 15 minut.

Teraz spójrz na argument funkcji WAIT w VBA.

W czasie kłótni musimy wspomnieć, o której godzinie nasz kod powinien się zatrzymać lub poczekać.

Na przykład spójrz na poniższy kod VBA.

Kod:

 Sub Pause_Example1 () Zakres („A1”). Wartość = „Witaj” Zakres („A2”). Wartość = „Witamy” Aplikacja.Wait („13:15:00”) Zakres („A3”). Wartość = „ Do VBA „End Sub 

Pamiętaj, że podczas uruchamiania tego kodu mój czas systemowy to 13:00:00, jak tylko uruchomię kod, wykona on pierwsze dwie linie, tj.

Zakres („A1”). Wartość = „Witaj” & Zakres („A2”). Wartość = „Witamy”

Ale jeśli spojrzysz na następną linię, jest napisane Application.Wait („13:15:00”), więc po wykonaniu zadań tych linii moje makro zostanie wstrzymane na 15 minut, tj. Od 13:00:00 będzie czekało do mojego systemu czas sięga 13:15:01.

Gdy mój czas systemowy osiągnie ten czas, wykona pozostałe wiersze kodu.

Zakres („A3”). Wartość = „Do VBA”

Jednak nie jest to najlepszy sposób ćwiczenia kodu pauzy, powiedzmy, że uruchamiasz kod w różnym czasie, wtedy musimy użyć funkcji TERAZ VBA z funkcją WARTOŚĆ CZASU.

Funkcja Now zwraca aktualną datę i godzinę zgodnie z systemem, nad którym pracujemy.

Funkcja TIME Value przechowuje czas od 00:00:00 do 23:59:29.

Ok, załóżmy, że musimy wstrzymać kod na 10 minut za każdym razem, gdy uruchamiamy kod, a następnie możemy użyć poniższego kodu.

Kod:

 Sub Pause_Example1 () Range („A1”). Value = „Hello” Range („A2”). Value = „Welcome” Application.Wait (Now () + TimeValue („00:00:10”)) Range („ A3 ”). Wartość =„ Do VBA ”End Sub 

Jest to podobne do poprzedniego kodu, ale jedyną różnicą jest dodanie funkcji TERAZ & WARTOŚĆ CZASOWA.

Za każdym razem, gdy uruchamiamy ten kod, będzie on wstrzymywać lub wstrzymywać wykonywanie na 10 minut.

Jak wstrzymać kod VBA za pomocą metody uśpienia?

Uśpienie to skomplikowana funkcja w języku VBA, ponieważ nie jest funkcją wbudowaną. Ponieważ nie jest to wbudowane narzędzie, aby było dostępne do użytku, musimy dodać poniższy kod na początku naszego modułu.

Kod:

# Jeśli VBA7 Następnie publicznie zadeklaruj PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'dla systemów 64-bitowych # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) # End If' Dla systemów 32-bitowych 

Wystarczy skopiować powyższy kod i wkleić go u góry modułu.

Powód, dla którego musimy dodać powyższy kod, ponieważ SLEEP jest funkcją VBA prezentowaną w plikach DLL systemu Windows, więc musimy zadeklarować nomenklaturę przed rozpoczęciem podprocedury.

Ok, spójrzmy teraz na przykład funkcji SLEEP.

Kod:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Najpierw zadeklarowaliśmy dwie zmienne jako String.

 Dim StartTime As String Dim EndTime As String 

Następnie przypisaliśmy funkcję TIME excel do zmiennej StartTime. Funkcja TIME zwraca aktualny czas zgodnie z systemem.

StartTime = czas

Następnie przypisaliśmy to samo do pokazania w oknie komunikatu.

MsgBox StartTime

Następnie zastosowałem funkcję SLEEP jako Sleep (10000).

Tutaj 10000 to milisekundy, co w VBA odpowiada 10 sekundom.

W końcu przypisałem jeszcze jedną funkcję TIME do zmiennej EndTime .

Teraz znowu napisałem kod pokazujący czas.

EndTime = czas

To pokaże różnicę między godziną rozpoczęcia a czasem zakończenia.

Teraz wykonam kod i zobaczę, jaki jest czas rozpoczęcia.

Kiedy wykonuję kod, mój czas systemowy to 13:40:48, a teraz mój kod będzie spał na 10 sekund. Na koniec mój czas wygląda następująco.

W ten sposób możemy wstrzymać wykonywanie kodu przez określony czas.