VBA On Error Idź do 0

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

VBA On Error GoTo 0 to instrukcja obsługi błędu używana 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 zacząć od instrukcji „On Error Resume Next”, a aby zakończyć tę procedurę 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?

Możesz pobrać ten szablon VBA przy błędzie Idź do 0 Excel szablon tutaj - VBA przy błędzie Idź do 0 szablon Excela

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 polega na tym, że najpierw wybierze arkusz o nazwie „Arkusz1”, a do komórki A1 wstawi 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 moim 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 poradzić sobie z tym błędem, 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 braku dostę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ć, dla ilu wierszy musimy zignorować ten błąd.

W tym przykładzie musimy po prostu zignorować błąd dla pierwszego arkusza, ale od drugiego arkusza potrzebujemy, aby błąd wystąpił, jeśli nie ma arkusza roboczego „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 („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, wykonanie kodu przeskoczy do następnej linii i zostanie wykonane aktywne zadanie linii. 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 każdy błąd zostanie zignorowany, 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żna wstawić wartości w komórce A1 jako 500, ale to, co robi, wstawia wartość 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 linii zostanie wykonane.

Odkąd „On Error GoTo 0” jest wykonywany, zatrzymał 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ł 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, po zakończeniu procedury obsługi błędu podprocedury zostanie wyłączona.