Funkcja Excel VBA DoEvents

Kiedy piszemy ogromne kody, zawsze wpadamy w pułapkę VBA. Kiedy kod jest duży, VBA nie ma czasu na zakończenie procesu uruchamiania i wykonywania. Co może potrwać od minuty do kilku minut. To czas, kiedy wszyscy się denerwują. I nie możemy zrobić nic więcej w tym okresie. Aby tego uniknąć, w VBA mamy funkcję o nazwie DoEvents. Za pomocą DoEvents możemy uruchomić kod w tle i jednocześnie możemy robić inne rzeczy. Nie możemy pracować tylko na innym narzędziu lub oprogramowaniu, ale także możemy przerwać kod lub zatrzymać się między procesem wykonania.

Po wpisaniu DoEvent w kodzie, oprócz VBA, będziemy mieć kontrolę nad pracą, którą chcemy wykonać. Zaletą DoEvents jest to, że nie ma żadnej składni do pisania. Możemy bezpośrednio umieścić Doevents tam, gdzie chcemy przejąć kontrolę nad VBA i wykonywać zadania zgodnie z naszymi potrzebami.

Jak korzystać z funkcji DoEvents w programie Excel VBA?

Poniżej znajdują się różne przykłady użycia funkcji DoEvent w programie Excel przy użyciu kodu VBA.

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

Excel VBA DoEvents - przykład nr 1

Chociaż do wykonania DoEvent potrzebujemy ogromnego zestawu danych, w których możemy zobaczyć, w jaki sposób kod jest przerywany. Tak więc użyjemy pętli, w której liczby będą stosowane aż do zakończenia kodu. W tym celu wykonaj następujące kroki:

Krok 1: Otwórz moduł w VBA z zakładki menu Wstaw, jak pokazano poniżej.

Krok 2: Napisz podprocedurę VBA DoEvents lub możemy wybrać dowolną nazwę, aby zdefiniować kod zgodnie z naszymi potrzebami.

Kod:

 Sub VBA_DoEvents () End Sub 

Krok 3: Teraz zdefiniuj zmienną o dowolnej nazwie z typami danych Long. Celem rozważenia typu danych jako Długiego jest to, że weźmiemy dowolną żądaną długość danych, co nie jest możliwe, jeśli weźmiemy pod uwagę liczbę całkowitą.

Kod:

 Sub VBA_DoEvents () Dim A As Long End Sub 

Krok 4: Teraz otwórz pętlę For-Next, w której określimy warunki.

Kod:

 Sub VBA_DoEvents () Dim A As Long For Next A End Sub 

Krok 5: Zastanów się nad zakresem wybranej liczby, którą można wdrożyć. Tutaj bierzemy zakres od 1 do 2000 w zdefiniowanej zmiennej A.

Kod:

 Sub VBA_DoEvents () Dim A As Long For A = 1 To 20000 Next A End Sub 

Krok 6: Po zdefiniowaniu zakresu liczb wybierzemy zakres komórek, w którym zobaczymy zmiany liczb, które wybraliśmy powyżej. Powiedzmy, że zakres komórek to A1 do A5. Może to być również pojedyncza komórka.

Kod:

 Sub VBA_DoEvents () Dim A As Long For A = 1 do 20000 Range ("A1: A5"). Wartość = A Next A End Sub 

Krok 7: Teraz uruchom kod, klikając przycisk Odtwórz znajdujący się pod paskiem menu.

Zobaczymy, kod został zakończony przez wydrukowanie liczb od 1 do 20000, ale nie mogliśmy go zatrzymać.

Krok 8: Aby uzyskać pełną kontrolę nad kodem, zastosuj DoEvent po warunkach pętli, jak pokazano poniżej.

Kod:

 Sub VBA_DoEvents () Dim A As Long For A = 1 do 20000 Range („A1: A5”). Wartość = A DoEvent Next A End Sub 

Krok 9: Teraz ponownie uruchom kod. W tym momencie próbujemy zatrzymać kod, klikając przycisk zatrzymania, zauważymy, że kod zostanie zatrzymany między procesami przed zakończeniem próby 20000.

Excel VBA DoEvents - przykład nr 2

Istnieje inny rodzaj procesu wdrażania DoEvent. Ale do tego również będziemy potrzebować ogromnego kodu, jak widać w przykładzie 1. W tym celu wykonaj następujące kroki:

Krok 1: Napisz podprocedurę VBA DoEvent, jak pokazano poniżej.

Kod:

 Sub VBA_DoEvents2 () End Sub 

Krok 2: Bezpośrednio otwórz pętlę For-next bez definiowania zmiennej.

Kod:

 Sub VBA_DoEvents2 () For Next End Sub 

Krok 3: Wybierz zakres liczb, które będą wyświetlane. Niech zakres będzie wynosić od 1 do 20000 tak samo jak w przykładzie 1.

Kod:

 Sub VBA_DoEvents2 () Dla A = 1 do 20000 Następny koniec Sub 

Krok 4: Teraz bezpośrednio umieść dowolną pracę dla danych wyjściowych, powiedzmy, że wyniki są takie, jak pokazano poniżej. Zakres wartości będzie wynosił +1 wartości rzeczywistej.

Kod:

 Sub VBA_DoEvents2 () Dla A = 1 do 20000 Wyjście = Wyjście + 1 Następny koniec Sub 

Krok 5: Teraz wybierz zakres, w którym chcemy zobaczyć wynik. Niech komórką będzie A1.

Kod:

 Sub VBA_DoEvents2 () Dla A = 1 do 20000 Wyjście = Wyjście + 1 zakres („A1”). Wartość = Wyjście Następny koniec Sub 

Krok 6: W końcu umieścimy DoEvent na końcu warunku pętli For.

Kod:

 Sub VBA_DoEvents2 () Dla A = 1 do 20000 Wyjście = Wyjście + 1 zakres („A1”). Wartość = Wyjście DoEvent Następny koniec Sub 

Krok 7: Następnie uruchom kod, naciskając klawisz F5. Zobaczymy, możemy zrobić wszystko, nawet gdy kod jest uruchomiony. Do celów demonstracyjnych wybrałem komórki B1 i C1. Liczby osiągnęły jedynie 4348, czyli znacznie mniej niż ustalony limit.

Krok 8: Jeśli usuniemy DoEvent i uruchomimy kod, nie będziemy w stanie nic zrobić, dopóki kod nie zakończy procesu. Zobaczmy to także.

Kod:

 Sub VBA_DoEvents2 () Dla A = 1 do 20000 Wyjście = Wyjście + 1 zakres („A1”). Wartość = Wyjście Następny koniec Sub 

Krok 9: Teraz uruchom ponownie kod. Jak widać, podczas próby kliknięcia przycisku Stop kod się nie zatrzymał. A funkcja Play była nadal WŁĄCZONA.

Plusy i minusy Excel VBA DoEvents

  • Możemy pracować na dowolnym narzędziu lub pliku w tle, podczas gdy kod VBA będzie działał równolegle.
  • Korzystanie z DoEvent nie powstrzymuje nas przed wykonaniem pracy, którą chcemy, gdy kod jest uruchomiony.
  • Zastępuje arkusz lub skoroszyt, gdy przełączamy się między różnymi arkuszami lub skoroszytem.
  • Kod zatrzymuje się, gdy na chwilę piszemy lub zmieniamy komórkę i nie otrzymujemy powiadomienia.

Rzeczy do zapamiętania

  • Jeśli zrobimy coś bez zastosowania DoEventów, istnieje duża możliwość, że kod zamrozi system i plik. I że albo wznowimy pliki po całkowitym uruchomieniu kodu, albo zawiesimy plik przy wielu kliknięciach.
  • Widzimy zmianę w procesie podczas jednoczesnej pracy nad drugą pracą.
  • Po wypełnieniu kodu zapisz plik w formacie programu Excel z obsługą makr, aby uniknąć zgubienia kodu.
  • Spróbuj zastosować kod w ogromnym i dużym zestawie kodowania, tam zobaczymy faktyczną implementację i użycie.

Polecane artykuły

To jest przewodnik po VBA DoEvents. Tutaj omawiamy, jak korzystać z funkcji DoEvents w programie Excel przy użyciu kodu VBA, a także praktyczne przykłady i szablon Excela do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. Jak korzystać z StrConv w programie Excel VBA?
  2. Konwertuj liczby na tekst w programie Excel (przykłady)
  3. Funkcja VBA ByRef (przykłady z szablonem Excel)
  4. Excel SUMIFS z datami | Szablon Excel

Kategoria: