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 |