VBA pogreška zanemarivanja

Ovaj će vodič pokazati kako osigurati da VBA zanemaruje pogrešku prilikom izvođenja koda.

Ponekad, kada konstruirate VBA kôd, zapravo želite da VBA zanemari redak koda kada dođe do pogreške. To zapravo može biti vrlo korisno ako, na primjer, želite izbrisati list ako postoji, ali zanemarite taj redak koda ako list ne postoji.

(Za više informacija o VBA pogreškama pogledajte naš Vodič za rješavanje pogrešaka)

Uključeno Slijedi nastavak greške

Da bismo zanemarili redak koda u postupku, koristimo Uključeno Slijedi nastavak greške izjava.

123456 Sub TestErrorIgnore ()Uključeno Slijedi nastavak greškeActiveWorkbook.Sheets ("Sheet4"). OdaberiteActiveSheet.Delete'Više koda ovdjeKraj podm

U gornjem primjeru, an Uključeno Slijedi nastavak greške izjava je stavljena na vrh postupka. Kôd se zatim konstruira tako da odabere Sheet4, a zatim ga izbriše.

Međutim, zbog Uključeno Slijedi nastavak greške , ako kôd ne pronađe Sheet4, samo će preći na sljedeći redak i izbrisati bilo koji aktivni list koji pronađe.

To može biti prilično opasno ako želite izbrisati samo list 4, a ne samo list koji je aktivan. Da bismo spriječili ovu pogrešku, možemo postaviti varijablu na list 4 i izbrisati samo taj list AKO postoji.

1234567 Sub TestErrorIgnore ()Zatamni kao radni listUključeno Slijedi nastavak greškePostavite ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'Više koda ovdjeKraj podm

Sada kada se kôd pokrene, izbrisat će se samo Sheet4 AKO List 4 zapravo postoji. Ako list 4 ne postoji, VBA će zanemariti pogrešku i nastaviti s radom.

Drugi primjer ovoga je ako želite izbrisati sve listove iz radne knjige pomoću petlje. Budući da radna knjiga programa Excel mora imati barem jedan list, kôd će izbrisati sve listove osim jednog.

123456 Podizbriši tablice ()Zatamni kao radni listZa svaki ws u ActiveWorkbook.Sheetsws.DeleteSljedeći wsKraj podm

Gornji kôd će prestati s pogreškom.

Klikom Otklanjanje pogrešaka odvest će nas u kôd s istaknutom linijom uvrede!

Međutim, dodavanjem Uključeno Slijedi nastavak greške redak koda spriječit će pogrešku, a rutina će uvijek ostaviti jedan list u radnoj knjizi.

12345678 Podizbriši tablice ()'Ovdje dodajte liniju pogreškeUključeno Slijedi nastavak greškeZatamni kao radni listZa svaki ws u ActiveWorkbook.Sheetsws.DeleteSljedeći wsKraj podm

Uključeno Greška Idi na 0

Često ako koristite Uključeno Slijedi nastavak greške da biste zanemarili pogrešku, želite da se greška zarobi kasnije u kodu ili želite da se vaš kôd prestane izvoditi ako se u budućnosti dogodi pogreška. Možemo ponovno postaviti upravljanje pogreškama tako da se kôd još jednom slomi na pogreške dodavanjem retka On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Zatamni kao radni listUključeno Slijedi nastavak greškePostavite ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeleteUključeno Greška Idi na 0'Više koda ovdjeKraj podm
wave wave wave wave wave