Funkcja oczekiwania VBA

Funkcja oczekiwania w programie Excel VBA

VBA Wait to wbudowana funkcja służąca do wstrzymania wykonania kodu przez określony czas, jest bardzo podobna do tego, co robimy w poleceniu uśpienia, a do wstrzymania kodu używamy metody application.wait.

Niektóre kody wymagają trochę czasu, zanim przejdą do następnego wiersza kodu ze względu na inne zadania do wykonania. W takich przypadkach musimy zatrzymać kod do wykonania i wstrzymać na jakiś czas, a następnie przystąpić do wykonywania. Możemy wstrzymać kod do wykonania na dwa sposoby, pierwszy to metoda „uśpienia” a drugi to metoda „czekania”. W naszym wcześniejszym artykule omówiliśmy metodę „uśpienia VBA” służącą do wstrzymywania kodu VBA.

„Czekaj”, jak sama nazwa mówi, będzie przechowywać kod makra do wykonania w określonym przedziale czasu. Korzystając z tej metody, musimy określić czas, w którym nasz kod powinien się zatrzymać, poniżej zobaczymy przykłady.

Składnia funkcji CZEKAJ jest następująca.

Musimy wspomnieć o czasie, przez jaki nasz kod powinien się wstrzymywać. Jak widać na końcu, jest napisane Boolean, co oznacza, że ​​zwraca wynik jako wartości boolowskie, tj. TRUE lub FALSE.

Dopóki nie nadejdzie określony czas, wyświetla komunikat FALSE, a do momentu nadejścia określonego czasu zwraca TRUE.

W przeciwieństwie do funkcji SLEEP, ponieważ WAIT jest funkcją wbudowaną, gdzie SLEEP jest funkcją systemu Windows. Zanim uzyskamy dostęp do funkcji SLEEP, musimy wspomnieć o poniższym kodzie w górnej części modułu. Ale CZEKAJ nie wymaga tego.

Kod:

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

Przykłady użycia funkcji oczekiwania VBA programu Excel

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

Przykład 1

Załóżmy, że pracujesz w programie Excel w południe o 14:30 i chcesz, aby Twój kod został wstrzymany do czasu 14:40:00. Możesz użyć poniższego kodu.

Kod:

 Sub Wait_Example1 () Application.Wait "14:40:00" End Sub 

Kod zatrzyma działanie programu Excel do czasu, gdy w systemie operacyjnym osiągnie 14:40:00. Podawanie takiego czasu jest niebezpieczne, ponieważ nie zawsze pracujemy od 14:30, ale cały czas się zmienia.

Powiedzmy, że kiedy uruchamiasz kod, na który chcesz poczekać 2 minuty, jak odnieść się do tego w kodzie?

Możemy więc użyć funkcji VBA NOW z funkcją TIME VALUE, aby wprowadzić określony czas od bieżącego czasu.

Aby przypomnieć, funkcja NOW () zwraca aktualną datę i godzinę zgodnie z systemem komputerowym. Funkcja TIMEVALUE przedstawia czas od 00:00:00 do 23:59:59, czyli 23:59:59 w formacie 24-godzinnym. Konwertuje wartość ciągu na wartość czasu.

Na przykład NOW () + TIMEVALUE (00:02:30) oznacza aktualny czas + 2 min 30 sek.

Jeśli aktualny czas to 14:25:30, to zmieni się na 14:28:00.

Aby zatrzymać lub wstrzymać wykonywanie kodu od bieżącego czasu do następnych 10 minut, możesz użyć poniższego kodu.

Kod:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

Ważne jest, aby użyć funkcji TERAZ () do dokładnej pauzy, w przeciwnym razie skoroszyt programu Excel zostanie wstrzymany do północy. Możemy jednak wyjść z metody pauzy w dowolnym momencie, naciskając klawisz Esc lub klawisz Break.

Przykład nr 2

Poczekaj 10 sekund za każdym razem, gdy uruchomi się pętla

Metoda wait jest dobrze używana w przypadku pętli. Istnieją sytuacje, w których może być konieczne odczekanie 10 sekund za każdym uruchomieniem pętli czasowej. Na przykład spójrz na poniższe dane.

Aby obliczyć zysk = (sprzedaż - koszt), chcesz utworzyć pętlę i po każdej pętli odczekać 10 sekund, aby sprawdzić, czy wynik jest dokładny, czy nie. Poniższy kod zrobi to.

Kod:

 Sub Wait_Example3 () Dim k As Integer For k = 2 do 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Następny k Koniec Sub 

Ten kod obliczy kolumnę zysku wiersz po wierszu. Po zakończeniu pierwszej linii odczeka 10 sekund, zanim obliczy następną linię.

VBA Sleep vs VBA Wait

VBA SLEEPVBA CZEKAJ
Nie jest to wbudowana funkcja VBA, wymaga specjalnego kodu, aby uzyskać dostęp do tej funkcji.Jest to wbudowana funkcja VBA, nie wymaga żadnego specjalnego kodu, aby uzyskać dostęp do tej funkcji.
Sen wymaga milisekund jako ramy czasowej.Czekanie wymaga regularnych ram czasowych.
Kod możemy opóźnić w milisekundachMożemy opóźnić tylko o całe sekundy.