VBA On Error Idź do 0 - Jak korzystać z funkcji On Error GoTo 0 w Excel VBA?

Excel VBA w przypadku błędu Idź do 0

VBA On Error GoTo 0 jest instrukcją obsługi błędów używaną do wyłączania włączonej obsługi błędów w procedurze. Nazywa się to „wyłącznikiem obsługi błędów”.

Obsługa błędów w dowolnym języku programowania to klasa główna, którą wszyscy programiści muszą zrozumieć. Język programowania VBA również, a także mamy techniki obsługi błędów w tym języku programowania. „On Error Resume Next” włącza obsługę błędów, a „On Error GoTo 0” wyłącza włączoną obsługę błędów.

Zarówno „On Error Resume Next” i „On Error GoTo 0” to pary, które muszą być używane w tandemie, aby zapewnić wydajność kodu. Aby obsłużyć błąd, musimy rozpocząć od instrukcji „On Error Resume Next” i zakończyć ten program obsługi błędów. Musimy użyć instrukcji „On Error GoTo 0”.

Każdy kod linii zapisany między tymi instrukcjami zignoruje wszelkiego rodzaju błędy, które wystąpiły w postępowaniu.

Jak korzystać z instrukcji On Error GoTo 0?

Na przykład spójrz na poniższy kod.

Kod:

Sub On_ErrorExample1 () Arkusze robocze („Arkusz1”). Wybierz zakres („A1”). Wartość = 100 arkuszy roboczych („Arkusz2”). Wybierz zakres („A1”). Wartość = 100 Koniec Sub

Powyższy kod najpierw wybiera arkusz o nazwie „Arkusz1”, a do komórki A1 wstawia wartość 100.

Kod:

Arkusze robocze („Arkusz1”). Wybierz zakres („A1”). Wartość = 100

Następnie wybierze arkusz o nazwie „Arkusz2” i wstawi tę samą wartość.

Kod:

Arkusze robocze („Arkusz2”). Wybierz Zakres („A1”). Wartość = 100

Teraz mam poniższe arkusze w swoim skoroszycie.

Nie ma arkuszy o nazwie „Arkusz1” i „Arkusz2”. Po uruchomieniu kodu wystąpi błąd podobny do poniższego.

Ponieważ nie ma arkusza o nazwie „Arkusz1”, wystąpił błąd „Indeks dolny poza zakresem”. Aby obsłużyć ten błąd, dodam instrukcję obsługi błędów „On Error Resume Next” w górnej części makra.

Kod:

Sub On_ErrorExample1 () Przy błędzie Wznów następne arkusze („Arkusz1”). Wybierz zakres („A1”). Wartość = 100 arkuszy roboczych („Arkusz2”). Wybierz zakres („A1”). Wartość = 100 Koniec Sub

Teraz uruchom kod i zobacz, co się stanie.

Nie wyświetli żadnych komunikatów o błędach, ponieważ włączona jest instrukcja obsługi błędów On Error Resume Next .

Wyobraź sobie scenariusz, w którym musimy zignorować błąd w przypadku niedostępności arkusza „Arkusz1”, ale musimy powiadomić, jeśli nie ma arkusza o nazwie „Arkusz2”.

Ponieważ na górze dodaliśmy On Error Resume Next , program zaczął obsługiwać błąd, ale jednocześnie musimy określić, ile wierszy musimy zignorować.

W tym przykładzie musimy po prostu zignorować błąd dla pierwszego arkusza, ale dla drugiego arkusza i kolejnych. Potrzebujemy błędu, jeśli nie ma arkusza „Arkusz2”. Więc po pierwszym kodzie arkusza dodaje wiersz wyłączający błąd On Error GoTo 0.

Kod:

Sub On_ErrorExample1 () Przy błędzie Wznów następne arkusze robocze („Arkusz1”). Wybierz zakres („A1”). Wartość = 100 Przy błędzie Idź do 0 Arkusze robocze („Arkusz2”). Wybierz zakres („A1”). Wartość = 100 Koniec Sub

Teraz uruchom kod wiersz po wierszu, aby zobaczyć wpływ, naciskając klawisz F8.

Teraz, jeśli naciśniesz klawisz F8, gdy wykonanie kodu przeskoczy do następnego wiersza, a zadanie aktywnego wiersza zostanie wykonane. Teraz aktywna linia (linia w kolorze żółtym) to program obsługi błędów „On Error Resume Next”, a procedura obsługi błędów zostanie włączona.

Teraz pojawia się jakiś błąd. Będzie ignorowany, dopóki nie wykona procedury obsługi błędów, która wyłączy kod instrukcja „ On Error GoTo 0 ”.

W poprzedniej próbie napotkaliśmy błędy, ale naciśnij klawisz F8 jeszcze raz i zobacz magię.

Bez podania żadnego błędu, wznowiono wykonywanie kodu, mimo że nie ma arkusza „Arkusz2” do wybrania. Teraz ponownie naciśnij klawisz F8.

Ponieważ nie było arkusza Sheet1, nie może wstawić wartości w komórce A1 jako 500, ale to, co robi, to wstawienie wartości 500 do komórki A1, niezależnie od tego, który arkusz jest aktywny. Moim aktywnym arkuszem podczas wykonywania kodu był „Arkusz3”, więc wartość 100 jest wstawiana do komórki A1.

Teraz aktywną linią kodu jest „ On Error GoTo 0 ” po naciśnięciu klawisza F8. To zadanie liniowe zostanie wykonane.

Ponieważ wykonywany jest „On Error GoTo 0”, zatrzymał on proces obsługi błędów i ponownie zaczyna pokazywać błędy, jeśli takie wystąpią. Naciśnij klawisz F8 i zobacz błąd.

W poprzednim przypadku bez On Error GoTo 0 zignorował on również ten błąd, ale ponieważ dodaliśmy wyłącznik obsługi błędów, zaczął ponownie wyświetlać błąd.

O czym należy pamiętać

  • Zarówno On Error Resume Next, jak i On Error GoTo 0 muszą być używane jako „ Error Handler Enabler ” i „ Error Handler Disabler ”.
  • Każdy wiersz kodu między tymi dwoma instrukcjami napotka błąd, który zostanie zignorowany.
  • Jeśli istnieje instrukcja On Error GoTo 0, to po zakończeniu procedury obsługi błędu podprocedury zostanie wyłączona.

Interesujące artykuły...