VBA On Error GoTo - Typy instrukcji o błędzie w języku VBA

Excel VBA przy błędzie GoTo

Błędy są nieodłączną częścią każdego języka kodowania, a makra VBA niczym się od tego nie różnią. Moim zdaniem znalezienie przyczyny błędu to 90% wykonanej pracy, a 10% polega na tym, jak naprawić ten błąd. W każdym języku kodowania programiści używają własnego sposobu radzenia sobie z błędami w ich kodowaniu, więc my też używamy ich w kodowaniu VBA. Często musimy zignorować błąd lub często możemy chcieć przejść do określonych rzeczy, gdy wystąpi błąd. „On Error” to stwierdzenie, którego musimy używać w VBA do obsługi błędów.

Ta instrukcja ma trzy typy instrukcji, a poniżej znajduje się lista.

  1. W przypadku błędu Idź do 0
  2. Przy błędzie Idź do (etykieta)
  3. Przy błędzie Wznów Dalej

W tym artykule zobaczymy, jak te trzy instrukcje są używane w kodowaniu VBA do obsługi wszelkiego rodzaju błędów.

Jak używać języka VBA w instrukcjach błędów?

# 1 - Po błędzie Wznów Dalej

Jak mówi samo stwierdzenie, „Przy następnym wznowieniu błędu” oznacza, że ​​ilekroć błąd wystąpi w kodzie, „wznów” następny wiersz kodu, ignorując kod wiersza błędu. Spójrz teraz na poniższy kod.

W poniższym kodzie wspomniałem o nazwach arkuszy i poprosiłem o wpisanie wartości w pierwszej komórce jako „Testowanie błędów”.

Kod:

Sub On_Error_Resume_Next () Worksheets ("Ws 1"). Wybierz zakres ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Select Range ("A1"). Value = "Error Testing" Worksheets ( „Ws 3”). Wybierz zakres („A1”). Wartość = „Testowanie błędów” Arkusze robocze („Ws 4”). Wybierz zakres („A1”). Wartość = „Testowanie błędów” End Sub

Teraz mam w skoroszycie poniższe arkusze.

  • Uruchomię kod i zobaczę, co się stanie.
  • Otrzymaliśmy błąd „Indeks dolny poza zakresem”, kliknij „Debuguj”, aby zobaczyć, w której linii wystąpił błąd.
  • Tak więc w wierszu „Arkusze robocze („ Ws 3 ”) .Wybierz” otrzymaliśmy błąd. Dzieje się tak, ponieważ w naszym skoroszycie nie ma arkusza o nazwie „Ws 3”, więc wystąpił błąd.

W takich przypadkach możemy chcieć zignorować błąd i wznowić wykonywanie kodu do następnej linii. W tym miejscu pojawia się nasz moduł obsługi błędów „On Error Resume Next”.

  • Wszystko, co musimy zrobić, to dodać wiersz „On Error Resume Next” na początku makra.

Teraz wykonaj ten kod i nie wyświetli żadnego komunikatu o błędzie, ponieważ za każdym razem, gdy kod napotka błąd, zignoruje błąd i przejdzie do następnego wiersza kodu.

# 2 - Przy błędzie GoTo 0

Nie jest to program obsługi błędów, a raczej włącznik komunikatów o błędach po wyłączeniu komunikatu o błędzie za pomocą instrukcji „On Error Resume Next”.

Używając instrukcji „Resume Next”, makra VBA zaczynają ignorować każdy rodzaj błędu, który wystąpi i przechodzą do następnego wiersza kodów. Ale nie chcemy, aby tak się działo przez cały czas, ponieważ niektóre błędy musimy celowo zignorować, a inne potrzebujemy powiadomienia.

Jeśli jakikolwiek konkretny zestaw kodu spowoduje błąd w tym bloku kodu, wystarczy, że zignorujemy błędy w innych częściach kodu. Nie chcemy ignorować błędu.

  • Spójrz na poniższy obraz, aby zobaczyć użycie instrukcji „On Error GoTo 0”.

Więc teraz błędy będą ignorowane, dopóki kod nie znajdzie włącznika powiadamiającego o błędzie „On Error GoTo 0”, gdy ten wiersz kodu wykona normalne makra i zacznie generować komunikaty o błędach w zwykły sposób.

# 3 - Etykieta błędu GoTo

Widzieliśmy, jak zignorować błąd i jak włączyć z powrotem powiadomienie o błędzie. Teraz używając tej metody, możemy przejść do określonej linii kodu.

W tej metodzie „Etykieta” oznacza, że ​​możemy nadać tej etykiecie dowolną nazwę i taką samą etykietę należy podać także w wymaganym wierszu kodu.

Na przykład spójrz na ten sam kod z powyższego przykładu.

Teraz wykonajmy kod linia po linii, naciskając klawisz funkcyjny F8.

Teraz makro odczyta instrukcję obsługi błędów; naciśnij klawisz F8, aby wykonać pierwsze 2 kody arkusza.

Teraz makro ma wykonać trzeci kod arkusza roboczego, którego nie ma w skoroszycie, naciśnij klawisz F8 i zobacz, co się stanie.

Ponieważ makro napotkało błąd w poniższym wierszu kodu, przeskoczyło do etykiety obsługi błędów „ErrorMessage”, która została opisana za pomocą instrukcji „On Error GoTo (Label)”.

Teraz w oknie komunikatu pojawi się komunikat „Wystąpił błąd i wyjście z makra”.

Rzeczy do zapamiętania

  • Vba On Error GoTo 0 ponownie włączy powiadamianie o błędach, więc nie zapomnij dodać tego po dostarczeniu obsługi błędów.
  • Musisz być absolutnie pewien, w której części kodu chcesz zignorować błąd, więc dołącz obsługę błędu tylko dla tego bloku kodu.

Interesujące artykuły...