Kuidas saate Excel 2016s kõiki võimalikke vigu tuvastada ja käsitleda? Sageli ei saa. Õnneks pakub VBA veel üht võimalust nende tüütute vigadega toimetulemiseks.
EnterSquareRoot protseduuri uuesti läbivaatamine
Uurige järgmist koodi. Rutiin kasutab kõigi vigade tuvastamiseks universaalset avaldust On Error ja seejärel kontrollib, kas sisendkast tühistati.
Sub EnterSquareRoot5()
Dim Num Variandina
Hämarda sõnum stringina
' Seadistage veatöötlus
Viga GoTo BadEntry
' Küsi väärtust
Num = Inputbox ("Sisesta väärtus")
Tühistamise korral väljuge
Kui Num = "" Seejärel välju Sub
' Sisestage ruutjuur
ActiveCell.Value = ruut(arv)
Välju Sub
BadEntry:
Msg = "Tekkis viga." & vbNewLine & vbNewLine
Msg = Sõnum & "Veenduge, et vahemik on valitud, "
Msg = sõnum & "leht pole kaitstud",
Msg = Msg & "ja sisestate mittenegatiivse väärtuse."
MsgBox Msg, vbCritical
Lõpeta alam
See rutiin püüab kinni igat tüüpi käitusaegsed vead. Pärast käitusaja vea tuvastamist kuvab muudetud EnterSquareRoot-protseduur selle teatekasti. See teatekast kirjeldab tõrke kõige tõenäolisemaid põhjuseid.
Selle pooleldi kasuliku veateate genereerib protseduuri käitusaegne viga.
Kas viga ei tööta?
Kui teade On Error ei tööta nii, nagu reklaamitud, peate muutma üht oma seadetest.
Aktiveerige VBE.
Valige käsk Tööriistad → Valikud.
Klõpsake dialoogiboksi Suvandid vahekaarti Üldine.
Veenduge, et säte Break on All Errors on tühistatud.
Kui see säte on valitud, ignoreerib Excel sisuliselt kõiki On Error avaldusi. Tavaliselt soovite jätta suvandite Error Trapping määranguks Katkesta töötlemata vigade korral.
Teave On Error teate kohta
Kui kasutate VBA-koodis avaldust On Error, saate Exceli sisseehitatud veakäsitlusest mööda minna ja kasutada oma veakäsitluse koodi. Eelmises näites põhjustab käitustõrge makro täitmise hüppamise lausele BadEntry. Tänu sellele väldite Exceli ebasõbralikke veateateid ja saate kuvada kasutajale oma sõnumi.
Pange tähele, et näide kasutab Exit Sub lauset vahetult enne BadEntry silti. See väide on vajalik, kuna te ei soovi tõrkekäsitluse koodi käivitada, kui viga ei ilmne .