VBA Ignore Error

Acest tutorial va arăta cum să vă asigurați că VBA ignoră o eroare atunci când rulați codul.

Uneori, când construiți cod VBA, doriți de fapt ca VBA să ignore o linie de cod atunci când apare o eroare. Acest lucru poate fi de fapt foarte util dacă, de exemplu, doriți să ștergeți o foaie dacă există, dar ignorați acea linie de cod dacă foaia nu există.

(Consultați Ghidul nostru de gestionare a erorilor pentru mai multe informații despre erorile VBA)

La eroare Reluați în continuare

Pentru a ignora o linie de cod într-o procedură, folosim La eroare Reluați în continuare afirmație.

123456 Sub TestErrorIgnore ()La eroare Reluați în continuareActiveWorkbook.Sheets ("Sheet4"). SelectațiActiveSheet.Elete'mai multe coduri aiciSfârșitul Sub

În exemplul de mai sus, un La eroare Reluați în continuare declarația a fost plasată în partea de sus a procedurii. Codul este apoi construit pentru a selecta Sheet4 și apoi șterge-l.

Cu toate acestea, din cauza La eroare Reluați în continuare declarație, dacă codul nu găsește Sheet4, va trece la următoarea linie și va șterge oricare foaie activă pe care o găsește.

Acest lucru poate fi destul de periculos dacă ați dorit să ștergeți doar foaia 4 și nu doar foaia care este activă. Pentru a preveni această eroare, putem seta o variabilă la foaia 4 și șterge doar acea foaie DACĂ există.

1234567 Sub TestErrorIgnore ()Dim ws Ca foaie de lucruLa eroare Reluați în continuareSet ws = ActiveWorkbook.Sheets ("Sheet4")ws. Ștergeți'mai multe coduri aiciSfârșitul Sub

Acum, când codul este rulat, numai Sheet4 va fi șters DACĂ Sheet4 există de fapt. Dacă foaia 4 nu există, VBA va ignora eroarea și va continua.

Un alt exemplu în acest sens este dacă doriți să ștergeți toate foile din registrul de lucru folosind o buclă. Deoarece un registru de lucru Excel trebuie să aibă cel puțin o foaie, codul va șterge toate foile, cu excepția uneia.

123456 Sub DeleteSheets ()Dim ws Ca foaie de lucruPentru fiecare ws din ActiveWorkbook.Sheetsws. ȘtergețiUrmătorul wsSfârșitul Sub

Codul de mai sus se va opri cu o eroare.

Dând clic Depanare ne va duce în cod cu linia ofensatoare evidențiată!

Cu toate acestea, adăugând La eroare Reluați în continuare linia către cod va preveni eroarea și rutina va lăsa întotdeauna o foaie în registrul de lucru.

12345678 Sub DeleteSheets ()'adăugați aici o linie de eroareLa eroare Reluați în continuareDim ws Ca foaie de lucruPentru fiecare ws din ActiveWorkbook.Sheetsws. ȘtergețiUrmătorul wsSfârșitul Sub

La eroare GoTo 0

Adesea dacă folosești La eroare Reluați în continuare pentru a ignora o eroare, doriți ca eroarea să fie capturată mai târziu în cod sau doriți ca codul dvs. să se oprească dacă apare o eroare în viitor. Putem restabili setarea erorii, astfel încât codul să se rupă din nou de erori adăugând linia On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws Ca foaie de lucruLa eroare Reluați în continuareSet ws = ActiveWorkbook.Sheets ("Sheet4")ws. ȘtergețiLa eroare GoTo 0'mai multe coduri aiciSfârșitul Sub
wave wave wave wave wave