Funkcja uśpienia VBA

Funkcja uśpienia w VBA jest w rzeczywistości funkcją systemu Windows. Podobnie jest z funkcją oczekiwania w VBA. Służy do spowalniania lub wstrzymywania lub można powiedzieć, że należy zatrzymać działanie określonego kodu o określony czas. Funkcja uśpienia musi być wywołana w VBA podczas deklarowania jej w kodzie. Jak to zrobimy, nauczymy się w dzisiejszym temacie.

Jak wyjaśniono powyżej, VBA Sleep jest funkcją systemu Windows i jest obecny w bazie danych jądra systemu Windows. Metoda deklarowania i wywoływania funkcji uśpienia w VBA jest inna dla 32-bitowych systemów operacyjnych i 64-bitowych. Jest to w zasadzie funkcja API systemu Windows.

Składnia do użycia funkcji wstrzymania VBA jest następująca:

Sen (czas w milisekundach)

Jeśli więc musimy zwolnić lub zatrzymać kod na 1 sekundę, musimy napisać kod jako:

 Spać 1000 

1000 to miliard sekund, co odpowiada 1 sekundzie i spowolni kod na 1 sek. Jeśli chcemy spowolnić kod na 5 sekund, kod będzie:

 Spać 5000 

Deklaracja funkcji uśpienia jest następująca:

 #Jeśli VBA7 to „Excel 2010 lub nowszy Publiczne zadeklaruj Sub Sleep Lib„ kernel32 ”(ByVal Milliseconds jako LongPtr) #Else„ Excel 2007 lub wcześniejsze Publiczne zadeklaruj Sub Sleep Lib „kernel32” (ByVal Milisekundy tak długo) # End Jeśli 
Uwaga: Przed użyciem funkcji snu należy pamiętać o jednej rzeczy. Musimy używać tej funkcji w modułach, a nie w obiektach programu Excel. Aby użyć VBA, aby upewnić się, że karta programisty jest włączona z karty plików w sekcji opcji.

Jak korzystać z funkcji uśpienia Excel VBA?

Nauczymy się korzystać z funkcji VBA Sleep z kilkoma przykładami w programie Excel.

Możesz pobrać ten szablon Excel VBA Sleep tutaj - Szablon Excel VBA Sleep

Funkcja uśpienia VBA - przykład nr 1

W tym przykładzie zrobimy to, aby wyświetlić użytkownikowi komunikat, że makro zatrzyma się na pięć sekund. I dokładnie po pięciu sekundach chcemy, aby pojawiła się druga wiadomość z informacją, że wznowiono makro.

Wykonaj poniższe czynności, aby użyć funkcji uśpienia w programie Excel VBA:

Krok 1: Przejdź do karty Deweloper i kliknij Visual Basic, aby otworzyć Edytor VB.

Krok 2: Po otwarciu edytora VB kliknij kartę Wstaw, a następnie kliknij moduły, aby wstawić nowy moduł.

Krok 3: Teraz użyj instrukcji deklaracji, aby użyć funkcji uśpienia. Ponieważ korzystam z 64-bitowego systemu operacyjnego Windows, dla tego samego użyję deklaracji.

Kod:

 Publiczne oświadczenie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) 

Krok 4: Teraz zadeklaruj funkcję podrzędną, aby rozpocząć pisanie kodu.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample () End Sub 

Krok 5: Użyj funkcji Mgsbox, aby wyświetlić komunikat, że makro zostanie wstrzymane na pięć sekund.

Kod:

 Publiczna deklaracja PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample () MsgBox „MAcro zostanie wstrzymany na pięć sekund” End Sub 

Krok 6: Użyj funkcji Sleep, aby zatrzymać makro na pięć sekund.

Kod:

 Publiczna deklaracja PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample () MsgBox „MAcro zostanie wstrzymany na pięć sekund” Sleep 5000 End Sub 

Krok 7: Teraz użyj funkcji msgbox, aby wyświetlić komunikat, że makro zostało wznowione.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample () MsgBox „MAcro zostanie wstrzymany na pięć sekund„ Sleep 5000 MsgBox ”Makro zostało wznowione„ End Sub 

Krok 8: Uruchom kod z dostarczonego przycisku uruchamiania lub naciśnij klawisz F5, aby zobaczyć wynik. Widzimy pierwszy komunikat jest wyświetlany.

Krok 9: Po kliknięciu OK i odczekaniu pięciu sekund widzimy kolejną wiadomość.

Pomiędzy obiema wiadomościami nastąpiła przerwa na pięć sekund.

Funkcja uśpienia VBA - Przykład 2

Teraz w innym przykładzie zrobimy, że mam cztery zmienne A, B, C i D. Najpierw chcę dodać wartość A i B i wyświetlić ją, a po 5 sekundach chcę wyświetlić wartość dodanie A, B, C i D.

Wykonaj poniższe czynności, aby użyć funkcji uśpienia w programie Excel VBA:

Krok 1: Przejdź do karty Deweloper i kliknij Visual Basic, aby otworzyć Edytor VB.

Krok 2: Po otwarciu edytora VB kliknij kartę Wstaw, a następnie kliknij moduły, aby wstawić nowy moduł.

Krok 3: Teraz użyj instrukcji deklaracji, aby użyć funkcji uśpienia. Ponieważ korzystam z 64-bitowego systemu operacyjnego Windows, dla tego samego użyję deklaracji.

Kod:

 Publiczne oświadczenie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) 

Krok 4: Teraz zadeklaruj funkcję podrzędną, aby rozpocząć pisanie kodu.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample1 () End Sub 

Krok 5: Zadeklaruj sześć zmiennych A, B, C, D, X i Y do przechowywania wartości.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y As Integer End Sub 

Krok 6: Podaj losowe wartości A, B, C i D.

Kod:

 Publiczna deklaracja PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y As Integer A = 10 B = 15 C = 20 D = 25 End Sub 

Krok 7: Zapisz wartość A + B w X.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y As Integer A = 10 B = 15 C = 20 D = 25 X = A + B Napis końcowy 

Krok 8: Wyświetl wartość X.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y As Integer A = 10 B = 15 C = 20 D = 25 X = A + B MsgBox X End Sub 

Krok 9: Teraz użyj funkcji uśpienia, aby zrobić przerwę na pięć sekund.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y As Integer A = 10 B = 15 C = 20 D = 25 X = A + B MsgBox X Sleep 5000 End Sub 

Krok 10: Teraz w zmiennej Y zapisz wartość X + C + D i wyświetl ją.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y As Integer A = 10 B = 15 C = 20 D = 25 X = A + B MsgBox X Sleep 5000 Y = X + C + D MsgBox Y End Sub 

Krok 11: Uruchom powyższy kod z dostarczonego przycisku uruchamiania lub naciskając klawisz F5 i zobacz wynik. Widzimy, że pierwsza wiadomość jest wyświetlana jako.

Krok 12: Naciśnij OK, a makro czeka przez pięć sekund i wyświetla następny wynik.

Funkcja uśpienia VBA - Przykład 3

W tym przykładzie chcemy zmienić nazwę dwóch arkuszy 1 i 2 arkusza odpowiednio na Anand i Aran. Ale czas między nimi powinien wynosić pięć sekund. Zasadniczo chcemy, aby makro zatrzymało się po zmianie nazwy arkusza 1, a następnie zmianie nazwy arkusza 2. Obecnie oba arkusze mają następujące nazwy:

Wykonaj poniższe czynności, aby użyć funkcji uśpienia w programie Excel VBA:

Krok 1: Przejdź do karty Deweloper i kliknij Visual Basic, aby otworzyć Edytor VB.

Krok 2: Po otwarciu edytora VB kliknij kartę Wstaw, a następnie kliknij moduły, aby wstawić nowy moduł.

Krok 3: Teraz użyj instrukcji deklaracji, aby użyć funkcji uśpienia. Ponieważ korzystam z 64-bitowego systemu operacyjnego Windows, dla tego samego użyję deklaracji.

Kod:

 Publiczne oświadczenie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) 

Krok 4: Teraz zadeklaruj funkcję podrzędną, aby rozpocząć pisanie kodu.

Kod:

 Publiczne deklarowanie PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample2 () End Sub 

Krok 5: Aktywuj arkusz 1 i zmień jego nazwę za pomocą następującego kodu:

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample2 () Arkusze robocze („Arkusz1”). Aktywuj arkusze robocze („Arkusz1”). Nazwa = „Anand” MsgBox ”Arkusz 1 przemianowano na„ End Sub 

Krok 6: Teraz użyj funkcji uśpienia, aby użyć opóźnienia na pięć sekund.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample2 () Arkusze robocze („Arkusz1”). Aktywuj arkusze robocze („Arkusz1”). Nazwa = „Anand” MsgBox ”Arkusz 1 przemianowany na„ Sleep 5000 End Sub 

Krok 7: Teraz zmień nazwę arkusza 2 za pomocą następującego kodu.

Kod:

 Publiczne zadeklarowanie PtrSafe Sub Sleep Lib „kernel32” (ByVal dwMilliseconds As LongPtr) Sub Sample2 () Arkusze robocze („Arkusz1”). Aktywuj arkusze robocze („Arkusz1”). Nazwa = „Anand” MsgBox ”Arkusz 1 zmienił nazwę na„ Arkusze uśpienia 5000 ”(„ Arkusz 2 ”). Aktywuj arkusze („ Arkusz 2 ”). Nazwa =„ Aran ”MsgBox” Arkusz 2 zmieniono nazwę na „End Sub 

Krok 8: Teraz uruchom kod i zobaczymy pierwszy komunikat.

Możemy również sprawdzić, czy nazwa arkusza 1 została zmieniona.

Krok 9: Naciśnij ok i poczekaj pięć sekund na zmianę nazwy następnej wiadomości i drugiego arkusza.

Drugi arkusz również zostaje przemianowany.

Rzeczy do zapamiętania

  • Uśpienie VBA jest funkcją okna, więc aby z niego skorzystać, musimy użyć instrukcji deklaracji.
  • Istnieją różne instrukcje deklaracji dla różnych typów systemów operacyjnych.
  • Po prostu użycie VBA Sleep zamraża makro na podany czas.
  • Parametr czasu nadany funkcji uśpienia VBA jest wyrażony w milisekundach.

Polecane artykuły

Jest to przewodnik po funkcji uśpienia VBA. Tutaj omawiamy, jak używać funkcji Excel VBA Sleep wraz z praktycznymi przykładami i szablonem Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. Funkcja VBA VLOOKUP
  2. Funkcja DCOUNT w programie Excel
  3. Wklej kopiowanie VBA
  4. Funkcja ŁĄCZENIA w programie Excel

Kategoria: