Obsługa błędów VBA

Obsługa błędów VBA w programie Excel

W VBA, kiedy pracujemy z kodami, możemy napotkać wiele różnych typów błędów, a sposób rozwiązywania tych błędów jest znany jako Obsługa błędów, teraz mogą wystąpić błędy, które są popełnione w składni, która sama w sobie wyróżnia się, ale gdy jest jakiś błąd który jest poza zakresem lub coś, co nie istnieje excel daje nam wyskakujące okienko dla tego samego, ważne jest, aby wiedzieć, który kod błędu jest dla jakiego błędu, aby zidentyfikować błąd w kodzie.

W Excel VBA podczas wykonywania dowolnego zestawu kodów otrzymujemy jakieś błędy. Niektóre z tych błędów to błędy składniowe, a inne to błędy, których nie można usunąć. Błąd składni występuje, gdy popełniony przez użytkownika jest podświetlony na czerwono przez sam program Excel. Ale jeśli wystąpi jakikolwiek inny błąd czasu wykonywania, jak sobie z nim radzimy i jak możemy wyjść poza to, omówimy w tym artykule.

Oprócz błędów składniowych, inne błędy czasu wykonania muszą być obsługiwane podczas wykonywania dowolnego zestawu kodów. Najpierw podam przykład, w jaki sposób występuje drugi błąd w czasie wykonywania. Spójrz na poniższy kod,

To jest przykładowy kod, gdy zostanie wykonany, zwróci to, co jest zapisane w funkcji msgbox. Ale jak widzimy, w drugiej linii kodu znajduje się 4/0, co nie jest możliwe w kategoriach matematycznych, więc zwróci błąd czasu wykonania. Wykonajmy powyższy kod i zobaczmy jaki błąd otrzymamy.

To jest błąd, który otrzymujemy podczas wykonywania podanego kodu. Teraz, jak poradzimy sobie z tym błędem, jest wykonywane przez obsługę błędów.

Istnieją dwie metody obsługi błędów:

  1. W przypadku błędu Goto i
  2. Przy błędzie Wznów Dalej.

Wyjaśnienie

Jak wyjaśniono powyżej, otrzymujemy wiele typów błędów w VBA, niektóre są składniowe, a niektóre są wykonywane w czasie wykonywania. Błędy składniowe są już zaznaczone na czerwono, na przykład patrz poniższy zrzut ekranu,

Podczas gdy drugi to błędy czasu wykonywania. Zasadniczo program Excel wykona następujące trzy rzeczy: albo wyświetli błąd, albo zignoruje ten błąd, albo wyświetli określony zestaw instrukcji. Aby wykonać takie zadania, musimy wydawać instrukcje i nazywa się to obsługą błędów.

Jak radzić sobie z błędami w kodzie VBA?

Możesz pobrać ten szablon programu Excel obsługujący błędy VBA tutaj - szablon programu Excel obsługujący błąd VBA

Przykład 1

W pierwszym przykładzie weźmy pierwszy kod, który wzięliśmy jako demonstrację. W powyższym przykładzie widzieliśmy, że kod podaje błąd czasu wykonania w drugiej funkcji msgbox.

Napisz poniższy kod po otwarciu podfunkcji,

Kod:

 Sub Sample () On Error Resume Next MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Teraz, gdy wykonujemy powyższy kod, widzimy, że wiersz kodu, który zawiera błąd, nie jest wykonywany. Excel pomija ten wiersz i wznawia w następnym wierszu.

Istnieje inna metoda obsługi błędu to instrukcja vba Goto. Zapewniamy cel, do którego należy przejść, gdy znajdzie błąd. Zamiast poprzedniego kodu obsługi błędów wstawiliśmy, zapisujemy następujący kod,

Kod:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Dajemy excel Az jako miejsce docelowe, do którego należy przejść, jeśli znajdzie błąd. Teraz po msgbox napisz kolejny kod, jak poniżej,

Kod:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Gotowe: Zakończ Sub 

Teraz musimy zdefiniować miejsce docelowe az jako to, co powinno zrobić, gdy program Excel znajdzie błąd w kodzie.

Kod:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Gotowe: Zakończ Sub az: MsgBox "To jest błąd" & Err.Description End Sub 

Teraz, gdy uruchamiamy ten kod, widzimy wyświetlany wynik.

To jest pierwszy wynik pola msg, a ponieważ wiemy, że w następnej linii naszego kodu wystąpił błąd, zobaczmy, jaki wynik da program Excel.

Opis err.description powyżej w kodzie pomaga nam dokładnie pokazać, jaki błąd wystąpił w naszym kodzie.

Przykład nr 2

Dowiedzieliśmy się, jak radzić sobie z błędami w naszych kodach. Spójrzmy na inny przykład postępowania z błędami. Rozważmy następujący kod jako nasz drugi przykład.

Mamy nieco podobny błąd z przykładu 1. Błąd znajduje się w wierszu d = i / b. Teraz zajmiemy się tymi błędami, używając dwóch metod opisanych powyżej.

Napisz poniższy kod po otwarciu podfunkcji,

Kod:

 Sub Sample2 () On Error Resume Next bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub 

Teraz, kiedy wykonujemy nasz kod, widzimy, że ignoruje on drugą linię i po prostu wyświetla wartość C.

Powyższy program obsługi błędów był następnym wznowieniem, teraz użyjemy opcji Idź do, w której poinformujemy program Excel o miejscu docelowym, które ma przejść, gdy napotka błąd. Zapisz następujący kod,

Kod:

 Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d

Bx jest miejscem docelowym podanym, gdy napotka błąd po zapisaniu przez msgbox D następującego kodu,

Kod:

 Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub 

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

 Sub Sample2() On Error GoTo bx Dim i As Integer , b As Integer , c As Integer , d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub bx: MsgBox " This is another Error " & Err.Description End Sub 

Now when we execute the code we can see that excel first gives us the value for C.

Now in another step, it will give us the prompt we provided it when it encounters an error.

This is how we handle the normal runtime errors in Excel VBA.

Things to Remember

There are a few things we need to remember about Error Handling:

  1. On Error Resume Next Ignores the error.
  2. On Error GoTo Gives excel a destination when it encounters an error.
  3. The description is used to show the exact error occurred to the user.