Kako lahko prepoznate in obravnavate vsako možno napako v Excelu 2016? Pogosto ne moreš. Na srečo VBA ponuja še en način za reševanje teh nadležnih napak.
Ponovni ogled postopka EnterSquareRoot
Preglejte naslednjo kodo. Podprogram uporablja večnamenski stavek On Error, da ujame vse napake in nato preveri, ali je bil InputBox preklican.
Sub EnterSquareRoot5()
Dim Num kot varianta
Zatemni sporočilo kot niz
' Nastavite ravnanje z napakami
Ob napaki Pojdi na BadEntry
' Poziv za vrednost
Številka = InputBox (»Vnesite vrednost«)
' Izhod, če je preklican
Če je Num = ““ Nato zapustite sub
' Vstavite kvadratni koren
ActiveCell.Value = Sqr (število)
Izhod Sub
BadEntry:
Sporočilo = "Prišlo je do napake." & vbNewLine & vbNewLine
Sporočilo = Sporočilo & "Prepričajte se, da je izbran obseg, "
Sporočilo = Sporočilo & "list ni zaščiten,"
Sporočilo = Sporočilo & "in vnesete nenegativno vrednost."
MsgBox Msg, vbCritical
Končni sub
Ta rutina ujame vse vrste napak med izvajanjem. Po prejetju napake med izvajanjem revidirani postopek EnterSquareRoot prikaže to sporočilo. V tem sporočilnem oknu so opisani najverjetnejši vzroki za napako.
Napaka med izvajanjem v postopku ustvari to polkoristno sporočilo o napaki.
Na Napaka ne deluje?
Če izjava On Error ne deluje, kot je oglaševano, morate spremeniti eno od nastavitev:
Aktivirajte VBE.
Izberite ukaz Orodja → Možnosti.
Kliknite zavihek Splošno v pogovornem oknu Možnosti.
Prepričajte se, da je nastavitev Break on All Errors preklicana.
Če je ta nastavitev izbrana, Excel v bistvu prezre vse izjave On Error. Običajno želite, da so možnosti prestrezanja napak nastavljene na Prekini ob neobdelanih napakah.
O izjavi On Error
Uporaba stavka On Error v kodi VBA vam omogoča, da zaobidete vgrajeno obdelavo napak v Excelu in uporabite lastno kodo za obravnavo napak. V prejšnjem primeru napaka med izvajanjem povzroči, da izvajanje makra skoči na stavek z oznako BadEntry. Posledično se izognete Excelovim neprijaznim sporočilom o napakah in uporabniku lahko prikažete svoje sporočilo.
Upoštevajte, da primer uporablja stavek Exit Sub tik pred oznako BadEntry. Ta izjava je potrebno zato, ker si ne želijo izvesti kodo, napake ravnanje, če je prišlo do napake se ne pojavi.