Funkcje oczekiwania i uśpienia VBA - Pauza / Opóźnienie kodu VBA

Ten samouczek pokaże, jak wstrzymać / opóźnić kod za pomocą funkcji oczekiwania i uśpienia w VBA.

Kiedy tworzymy duże programy VBA, które wykonują wiele obliczeń, a może nawet wywołujemy zewnętrzny program, możemy wymagać, aby nasz kod VBA przestał działać na określony czas, gdy trwa proces zewnętrzny. VBA ma kilka dostępnych metod, aby to osiągnąć.

Korzystanie z aplikacji.Metoda oczekiwania

Jeśli potrzebujemy wstrzymać działanie naszego makra na jakiś czas lub do określonego czasu przed wykonaniem kolejnego kroku, możemy użyć Aplikacja.Czekaj metoda. Może to być przydatne na przykład, jeśli zautomatyzowaliśmy proces logowania do witryny i musimy poczekać kilka sekund, aż strona zostanie załadowana, zanim nasze makro będzie nadal działać.

Poczekaj 1 sekundę

Włączając ten wiersz poniżej do swojego makra, jego działanie zostanie wstrzymane na około 1 sekundę:

1 Application.Wait (Teraz + TimeValue("0:00:01"))

Poczekaj, aż

W niektórych przypadkach będziesz musiał poczekać do określonej godziny. Z tym wierszem poniżej Twoje makro nie zostanie uruchomione przed 9 rano:

1 Aplikacja.Czekaj „09:00:00”

Należy pamiętać, że Aplikacja.Czekaj nie akceptuje opóźnień krótszych niż 1 sekunda.

Programowanie VBA | Generator kodu działa dla Ciebie!

Korzystanie z metody snu

Jeśli potrzebujesz bardziej precyzyjnego sposobu wstrzymywania makra, możesz użyć metody Sleep.

Sleep to funkcja Windows API, co oznacza, że ​​nie jest częścią VBA. Dostęp do niego można uzyskać za pomocą specjalnej deklaracji deklaracji.

Jeśli korzystasz z 64-bitowej wersji pakietu Microsoft Office, możesz wstawić następującą instrukcję do nowego modułu lub na początku modułu (nie bezpośrednio w podprogramie), w którym chcesz użyć funkcji Sleep:

1 Public Declare PtrSafe Sub Sleep Lib „kernel32” (ByVal Milliseconds As LongPtr)

W wersji 32-bitowej użyj tej linii:

1 Public Declare Sub Sleep Lib „kernel32” (ByVal milisekundy jako LongPtr)

Po zadeklarowaniu funkcji Sleep masz do niej dostęp w swoich podprogramach w następujący sposób:

1 Sen 10000

Z tą linią powyżej twoje makro zostanie wstrzymane na 10 000 milisekund, tj. 10 sekund.

Korzystanie z pętli ze zdarzeniami Do

Dużą wadą korzystania z metod oczekiwania i uśpienia jest to, że użytkownik nie może nic zrobić w programie Excel podczas oczekiwania na kontynuowanie makra. Użytkownik może pomyśleć, że program Excel przestał odpowiadać i podczas gdy użytkownik może wtedy używać Ctl+Przerwa aby przerwać makro, to niweczy cel wstawiania pauzy w makrze na początku.

Aby rozwiązać ten problem, możemy użyć pętli z metodą o nazwie DoEvents.

1234567 Podtest publiczny()Przyciemnij i tak długoDla i = 1 do 20000Zakres („A1”). Wartość = iZdarzeniaDalej jaNapis końcowy

Teraz, gdy program Excel uruchamia powyższe makro, użytkownik może kontynuować interakcję z programem Excel - możemy na przykład zmieniać zakładki lub formatować komórki - w zasadzie makro nadal działa, ale ekran programu Excel nie jest zamrożony. Moglibyśmy użyć podobnej pętli do utworzenia funkcji timera w programie Excel i włączenia Zdarzenia w ten sposób, aby odmrozić ekran, gdy zegar jest uruchomiony.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave