VBA On Error GoTo

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?

Możesz pobrać ten szablon instrukcji VBA On Error GoTo tutaj - VBA On Error GoTo Statement Template

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

Jak sama instrukcja mówi, „Przy błędzie Resume Next” 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 wymieniłem nazwy 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 poniższe arkusze w moim skoroszycie.

  • Uruchomię kod i zobaczę, co się stanie.

  • Otrzymaliśmy błąd „Indeks poza zakresem”, kliknij „Debuguj”, aby zobaczyć, w którym wierszu wystąpił błąd.

  • Tak więc w wierszu „Arkusze robocze („ Ws 3 ”). Wybierz” otrzymaliśmy błąd, ponieważ w naszym skoroszycie nie ma arkusza o nazwie „Ws 3”, więc napotkaliśmy 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 pokaże ż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 - Błąd 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”.

W przypadku użycia instrukcji „Wznów następny”, 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 ignorować, a inne potrzebujemy powiadomienia.

Jeśli jakikolwiek określony zestaw kodu zgłasza błąd w tym bloku kodu, tylko musimy zignorować błąd w innych częściach kodu, których nie chcemy ignorować.

  • 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 wykonuje makra z powrotem do normalnego stanu i zaczyna normalnie wyświetlać komunikaty o błędach.

# 3 - Etykieta błędu GoTo

Widzieliśmy, jak zignorować błąd i jak włączyć z powrotem powiadomienie o błędzie. Teraz za pomocą 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 również podać 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 kod arkusza.

Teraz makro ma zamiar wykonać trzeci kod arkusza, 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łędzie, 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.