Kako možete identificirati i obraditi svaku moguću pogrešku u Excelu 2016? Često ne možete. Srećom, VBA nudi još jedan način rješavanja tih dosadnih pogrešaka.
Ponovno razmatranje procedure EnterSquareRoot
Pregledajte sljedeći kod. Rutina koristi višenamjensku naredbu On Error da uhvati sve pogreške i zatim provjerava je li InputBox otkazan.
Sub EnterSquareRoot5()
Dim Num kao varijanta
Priguši poruku kao niz
' Postavite rukovanje pogreškama
U slučaju pogreške Idite na BadEntry
' Zatražite vrijednost
Num = InputBox ("Unesite vrijednost")
' Izađite ako je otkazano
Ako je Num = ““ Zatim izađite iz Sub
' Umetnite kvadratni korijen
ActiveCell.Value = Sqr(Broj)
Izlaz pod
BadEntry:
Poruka = "Dogodila se pogreška." & vbNewLine & vbNewLine
Poruka = Poruka & "Provjerite je li odabran raspon,"
Poruka = Poruka & "list nije zaštićen,"
Poruka = Poruka & "i unesete nenegativnu vrijednost."
MsgBox Poruka, vbKritično
Kraj Sub
Ova rutina zarobljava bilo koju vrstu pogreške tijekom izvođenja. Nakon zarobljavanja pogreške tijekom izvođenja, revidirana procedura EnterSquareRoot prikazuje ovaj okvir s porukom. Ovaj okvir s porukom opisuje najvjerojatnije uzroke pogreške.
Pogreška tijekom izvođenja u proceduri generira ovu polukorisnu poruku o pogrešci.
Na Greška ne radi?
Ako izjava On Error ne radi kako je oglašeno, morate promijeniti jednu od svojih postavki:
Aktivirajte VBE.
Odaberite naredbu Alati → Opcije.
Kliknite karticu Općenito u dijaloškom okviru Opcije.
Provjerite je li poništena postavka Break on All Errors.
Ako je ova postavka odabrana, Excel u biti zanemaruje sve izjave On Error. Obično želite zadržati opcije hvatanja pogrešaka postavljene na Prekini na neobrađene pogreške.
O izjavi On Error
Korištenje izjave On Error u vašem VBA kodu omogućuje vam da zaobiđete ugrađeno rukovanje pogreškama u Excelu i koristite vlastiti kod za rukovanje pogreškama. U prethodnom primjeru, pogreška tijekom izvođenja uzrokuje da izvođenje makronaredbe skoči na izraz s oznakom BadEntry. Kao rezultat toga, izbjegavate Excelove neugodne poruke o pogreškama i možete prikazati vlastitu poruku korisniku.
Primijetite da primjer koristi naredbu Exit Sub neposredno prije oznake BadEntry. Ova izjava je potrebno jer ne želite izvršiti greška kod rukovanja ako se greška ne ne javljaju.