Obsługa błędów Excel VBA

Obsługa błędów jest bardzo przydatnym i znaczącym mechanizmem dla języków programowania takich jak VBA. Kontrola lub zapobieganie błędom jest aspektem obsługi błędów, co oznacza podejmowanie skutecznych i znaczących środków w skrypcie VBA, aby uniknąć pojawienia się komunikatu wyskakującego błędu

Różne rodzaje błędów w VBA

  1. Błąd składni lub błąd analizy
  2. Błąd kompilacji lub kompilacji
  3. Błąd czasu wykonywania
  4. Błąd logiczny

Powyższe błędy można naprawić za pomocą wspomnianego poniżej debugowania i różnych instrukcji „On Error” wstawionych pomiędzy kod.

Po błędzie Wznów dalej

W przypadku błędu przejdź do 0

W przypadku błędu Goto

W przypadku błędu Goto -1

Obsługa błędów VBA za pomocą różnych instrukcji „ON ERROR”

Możesz pobrać ten szablon Excel obsługi błędów VBA tutaj - Szablon obsługi błędów Excel VBA

Przykład # 1 - Błędy kompilacji VBA

Jeśli wystąpi błąd w instrukcji lub składni kodu VBA, przez pomyłkę wpiszesz kod, który zostanie podświetlony na czerwono, w zależności od opcji ustawień w narzędziach (jeśli wybrałeś Automatyczne sprawdzanie składni).

Wyskakujące okienko z komunikatem o błędzie kompilacji pojawi się po uruchomieniu kodu z niepoprawną składnią.

Kod:

 Sub SYNTAX_ERROR () MsgBox to mój pierwszy program End Sub 

„KOMPILACJA BŁĄD: ZMIENNA NIE OKREŚLONA” to najczęstszy błąd, który pojawia się jako komunikat wyskakujący. gdy zmienna odniesienia nie jest zdefiniowana, pojawia się ten błąd.

Kod:

 Sub VBA_FORMAT1 () A = 19049.83 A = Format (A, „STANDARD”) MsgBox A Koniec Sub 

W powyższym przykładzie nie zadeklarowałem typu zmiennej jako String, dlatego ten błąd występuje. Tak więc muszę zadeklarować zmienną jako Dim A As String.

Kod:

 Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Format (A, „STANDARD”) MsgBox A End Sub 

Przykład # 2 - Błąd czasu wykonania VBA

Gdy w instrukcji występują niemożliwe matematyczne instrukcje lub terminy, pojawia się ten błąd czasu wykonywania.

Kod:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Przykład 3 - Błędy lub błędy logiczne VBA

Błędy te są bardzo trudne do wyśledzenia, ani nie zostaną podświetlone, ani nie pojawi się wyskakujący komunikat o błędzie. spowoduje nieoczekiwane działania i nieprawidłowe wyniki.

Przykład: gdy dwie zmienne są obecne w kodzie, może zawierać niepoprawną. W takim przypadku występuje błąd logiczny.

Jak zapobiegać błędom w VBA?

Sprawdźmy, jak zapobiegać powyższym różnym typom błędów w VBA Excel.

Krok 1: Aby otworzyć okno edytora VB Wybierz lub kliknij Visual Basic w grupie Kod na karcie Deweloper, albo możesz bezpośrednio kliknąć kombinację klawiszy Alt + F11 .

Krok 2: Aby utworzyć pusty moduł, w obiektach Microsoft Excel, kliknij prawym przyciskiem myszy arkusz 1 (VB_ERROR HANDLING) i wstaw moduł, aby utworzyć nowy pusty moduł.

Obsługa błędów VBA z opcją debugowania

Lepiej jest skompilować kod, zanim go uruchomimy. Aby śledzić kompilację, należy wykonać poniższe kroki. Na pasku narzędzi menu VB, w opcji Debugowanie, musimy wybrać kompilowany projekt VBA. Po kliknięciu sprawdza kod krok po kroku, gdy znajdzie błąd, podświetli go i pojawi się komunikat wyskakujący, dlatego musisz go poprawić. po poprawieniu musisz się skompilować, aby znaleźć następny błąd w kodzie.

Uwaga: Za pomocą opcji kompilacji możemy jedynie naprawić błąd kompilacji i składni.

Obsługa błędów VBA za pomocą różnych instrukcji „ON ERROR”

1. Po błędzie Wznów dalej

Tutaj błąd zostanie zignorowany, a kod przejdzie dalej.

W poniższym przykładzie 6 nie można podzielić przez zero, jeśli uruchomisz go bez wpisywania instrukcji On Error Resume Next, wtedy wystąpi niżej wymieniony błąd czasu wykonywania.

Kod:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Jeśli Wznów błąd Dalej zostanie wprowadzone na górze kodu po instrukcji Sub, ignoruje błąd czasu wykonywania i przechodzi do następnej instrukcji, co daje wynik 6/2, tj. 3 (okno komunikatu wyskakujące z wynikiem).

Kod:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

2. W przypadku błędu GoTo 0 i Error GoTo -1

„On Error GoTo 0” zatrzyma kod w konkretnym wierszu, który powoduje błąd i wyświetli okno komunikatu, które opisuje lub wskazuje błąd.

Kod:

 Sub onError_Go_to_0 () W przypadku błędu GoTo 0 Zabij zakres „C: TempFile.exe” („A1”). Wartość = 100 / „PETER” End Sub 

Zwykle pokazuje domyślne zachowanie podczas sprawdzania błędów, ma to znaczenie, gdy jest używane wraz z „Wznów dalej błędu następnego”.

Zazwyczaj można zobaczyć okno komunikatu o błędzie środowiska wykonawczego, zawierające opcje „Kontynuuj”, „Zakończ”, „Debuguj” i „Pomoc” . sprawdźmy zastosowania każdego z nich.

  • Opcja Kontynuuj zignoruje wyjątek i kontynuuje kod, jeśli to możliwe.
  • Opcja zakończenia kończy program.
  • Opcja debugowania podświetli instrukcję, w której wystąpił błąd. co pomaga w debugowaniu lub poprawianiu kodu.
  • Opcja pomocy przeniesie Cię do strony pomocy Microsoft MSDN.

W przypadku błędu GoTo 0 z włączonym błędem Wznów Dalej

Kod:

 Sub onError_Go_to_0_with_Resume_next () Po błędzie Wznów dalej Dalej Zabij „C: TempFile.exe” Po błędzie Zakres GoTo 0 („A1”). Wartość = 100 / „PETER” End Sub 

W powyższym kodzie będzie ignorować błędy, dopóki nie osiągnie instrukcji On Error GoTo 0. Po instrukcji On Error GoTo 0 kod wraca lub przechodzi do normalnego sprawdzania błędów i wyzwala oczekiwany błąd. kiedy uruchomię powyższy kod, pokaże błąd podziału, tj. niedopasowanie typu (wartości liczbowej nie można podzielić przez tekst).

W przypadku błędu GoTo 0 wyłącza wszelkie pułapki błędów obecnie obecne w kodzie VBA, tj. Wyłącza obsługę błędów w kodzie głównym, natomiast w przypadku błędu GoTo -1 usuwa obsługę błędów i ustawia na nic, co pomaga lub pozwala na utworzenie kolejnej pułapki błędów.

3. W przypadku błędu przejdź do <ETYKIETA

VBA przekazuje kontrolę programu do wiersza, po którym następuje etykieta, jeśli wystąpią jakiekolwiek błędy w czasie wykonywania, tj. Kod przeskakuje do określonej etykiety. W tym przypadku instrukcje kodu między wierszem wyjątku a etykietą nie zostaną wykonane.

Ta metoda jest bardziej odpowiednia i znacząca dla płynnego wyjścia z programu, jeśli podczas wykonywania wystąpi poważny błąd krytyczny.

W wymienionym poniżej kodzie VBA, jak tylko błąd wystąpi w linii 3, program przenosi sterowanie do linii 6, tj. Etykiety (komunikat wyskakujący pojawia się jako „moduł obsługi wyjątków” ).

Kod:

 Sub OnError_Go_to_Label () On Error GoTo Program obsługi błędów: MsgBox 9/0 MsgBox ”Ten wiersz nie zostanie wykonany” Wyjdź z Sub Program obsługi błędów: MsgBox ”Program obsługi wyjątków” End Sub 

Tutaj możesz zauważyć, że „Exit Sub” powinno być użyte tuż przed etykietą „Error_handler:”, ma to na celu zapewnienie, że blok kodu obsługi błędów powinien się zatrzymać lub nie zostanie wykonany, jeśli nie wystąpi błąd. Teraz możesz zapisać skoroszyt jako „skoroszyt z obsługą makr programu Excel”. Klikając Zapisz jak w lewym rogu arkusza roboczego.

Ponownie, jeśli otworzysz plik, możesz kliknąć klawisz skrótu, tj. Fn + Alt + F8, pojawi się okno dialogowe „Makro”, w którym możesz uruchomić wybrany zapisany kod makra lub możesz kliknąć Fn + Alt + F11, aby pełne okno makra.

Rzeczy do zapamiętania

  • Przed napisaniem kodu należy upewnić się, że przerwanie nieobsługiwanych błędów jest zaznaczone lub zaznaczone błędnie. opcja zalewania pod ogólną opcją narzędzia paska narzędzi VBA.
  • Jest to ustawienie domyślne, które pomaga zatrzymać kod w przypadku błędów, które nie są obsługiwane.
  • Przerwa we wszystkich błędach: Zatrzyma kod w przypadku wszystkich rodzajów błędów.
  • Moduł klasy włamania: W przypadku użycia w kodzie obiektu takiego jak formularz użytkownika, podświetli on dokładną linię powodującą błąd.

Polecane artykuły

To jest przewodnik po obsłudze błędów VBA. Tutaj omawiamy sposób korzystania z obsługi błędów VBA w programie Excel wraz z kilkoma praktycznymi przykładami i szablonem programu Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. VBA Declare Array (Przykłady)
  2. Błąd VBA
  3. Arkusz niezabezpieczony VBA
  4. Kolumny VBA | Szablony Excela
  5. VBA Environ

Kategoria: