Funkcja oczekiwania VBA - Jak korzystać z metody czekania Excel VBA?

Funkcja oczekiwania w programie Excel VBA

VBA Wait to wbudowana funkcja służąca do wstrzymania wykonania kodu na 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ć wykonywanie kodu i pauzować na jakiś czas, a następnie przystąpić do wykonywania. Możemy wstrzymać kod do wykonania na dwa sposoby, pierwszy to metoda „Sleep”, a drugi to „Wait”. 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, przez jaki nasz kod powinien się zatrzymać. Następnie 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. Oznacza to, że zwraca wynik jako wartości logiczne, tj. PRAWDA lub FAŁSZ.

Dopóki nie nadejdzie określony czas, wyświetla FALSE, a nadszedł określony czas, 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 u góry modułu. Ale CZEKAJ nie wymaga tego.

Kod:

#If 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)' Dla systemów 32-bitowych End If

Przykłady użycia funkcji oczekiwania VBA programu Excel

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. Takie zapewnienie czasu jest niebezpieczne, ponieważ nie zawsze pracujemy od 14:30. Cały czas się zmienia.

Powiedzmy, kiedy uruchamiasz kod. Chcesz poczekać 2 minuty, jak odnosisz się do tego w swoim kodzie?

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

Dla przypomnienia funkcja NOW () zwraca bieżącą 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 będzie 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 () w celu dokładnego wstrzymania. W przeciwnym razie istnieje prawdopodobieństwo, że skoroszyt programu Excel zostanie wstrzymany do północy. Możemy jednak wyjść z metody pause 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 razem, gdy uruchomiona jest pętla. Na przykład spójrz na poniższe dane.

Aby obliczyć zysk = (sprzedaż - koszt), chcesz utworzyć pętlę, a po każdej pętli chcesz czekać 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 SLEEP VBA 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 milisekundach. Możemy opóźnić tylko o całe sekundy.

Interesujące artykuły...