Błąd ignorowania VBA

Ten samouczek pokaże, jak upewnić się, że VBA ignoruje błąd podczas uruchamiania kodu.

Czasami podczas konstruowania kodu VBA chcesz, aby VBA zignorował wiersz kodu, gdy wystąpi błąd. Może to być naprawdę przydatne, jeśli na przykład chcesz usunąć arkusz, jeśli istnieje, ale zignoruj ​​ten wiersz kodu, jeśli arkusz nie istnieje.

(Zobacz nasz Przewodnik obsługi błędów, aby uzyskać więcej informacji na temat błędów VBA)

Przy błędzie Wznów Dalej

Aby zignorować linię kodu w procedurze, używamy Przy błędzie Wznów Dalej oświadczenie.

123456 Sub TestErrorIgnore()Przy błędzie Wznów DalejActiveWorkbook.Sheets("Arkusz4").selectAktywny arkusz.Usuń'więcej kodu tutajNapis końcowy

W powyższym przykładzie an Przy błędzie Wznów Dalej oświadczenie zostało umieszczone w górnej części procedury. Kod jest następnie konstruowany, aby wybrać Sheet4, a następnie go usunąć.

Jednak ze względu na Przy błędzie Wznów Dalej oświadczenie, jeśli kod nie znajdzie Sheet4, przejdzie po prostu do następnej linii i usunie dowolny aktywny arkusz, który znajdzie.

Może to być dość niebezpieczne, jeśli chcesz usunąć tylko Arkusz 4, a nie tylko Arkusz, który jest aktywny. Aby zapobiec temu błędowi, możemy ustawić zmienną na arkusz 4 i usunąć tylko ten arkusz, JEŚLI istnieje.

1234567 Sub TestErrorIgnore()Dim ws As WorksheetPrzy błędzie Wznów DalejUstaw ws = ActiveWorkbook.Sheets("Arkusz4")ws.Delete'więcej kodu tutajNapis końcowy

Teraz, gdy kod zostanie uruchomiony, tylko Sheet4 zostanie usunięty JEŚLI Arkusz4 faktycznie istnieje. Jeśli arkusz 4 nie istnieje, VBA zignoruje błąd i będzie kontynuował.

Innym przykładem jest to, że chcesz usunąć wszystkie arkusze ze skoroszytu za pomocą pętli. Ponieważ skoroszyt programu Excel musi mieć co najmniej jeden arkusz, kod usunie wszystkie arkusze z wyjątkiem jednego.

123456 Sub UsuńArkusze()Dim ws As WorksheetDla każdego ws w ActiveWorkbook.Sheetsws.DeleteNastępnyNapis końcowy

Powyższy kod zatrzyma się z błędem.

Kliknięcie Odpluskwić zabierze nas do kodu z podświetloną obraźliwą linią!

Jednak dodanie Przy błędzie Wznów Dalej linia do kodu zapobiegnie błędowi, a procedura zawsze pozostawi jeden arkusz w skoroszycie.

12345678 Sub UsuńArkusze()'dodaj tutaj wiersz błęduPrzy błędzie Wznów DalejDim ws As WorksheetDla każdego ws w ActiveWorkbook.Sheetsws.DeleteNastępnyNapis końcowy

W przypadku błędu Przejdź do 0

Często, jeśli używasz Przy błędzie Wznów Dalej aby zignorować błąd, chcesz zalewkować błędy w dalszej części kodu lub chcesz, aby kod przestał działać, jeśli błąd wystąpi w przyszłości. Możemy ponownie ustawić obsługę błędów, aby kod ponownie łamał się na błędach, dodając linię On Error GoTo 0.

12345678 Sub TestErrorIgnore()Dim ws As WorksheetPrzy błędzie Wznów DalejUstaw ws = ActiveWorkbook.Sheets("Arkusz4")ws.DeleteW przypadku błędu Przejdź do 0'więcej kodu tutajNapis końcowy

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave