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śliUwaga: 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 SleepFunkcja 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 -
- Funkcja VBA VLOOKUP
- Funkcja DCOUNT w programie Excel
- Wklej kopiowanie VBA
- Funkcja ŁĄCZENIA w programie Excel