Kõik VBA vead ei ole võrdsed. Mõned on tõsised ja mõned vähem tõsised. Kuigi võite ignoreerida vigu, mida peate ebaolulisteks, peate tegelema muude, tõsisemate vigadega. Mõnel juhul peate tuvastama konkreetse esineva vea.
Igal veatüübil on ametlik number. Tõrke ilmnemisel salvestab Excel tõrkenumbri Error-objekti nimega Err. Selle objekti atribuut Number sisaldab vea numbrit ja selle atribuut Description sisaldab vea kirjeldust. Näiteks kuvatakse järgmises lauses vea number, koolon ja tõrke kirjeldus:
MsgBox Err.Number & ": " & Err.Description
Pidage meeles, et Exceli veateated pole alati eriti kasulikud, kuid te teate seda juba.
Järgmine protseduur näitab, kuidas tuvastada, milline viga ilmnes. Sel juhul võite ohutult ignoreerida vigu, mis on põhjustatud mittepositiivse arvu ruutjuure hankimisest (st viga 5), või tõrkeid, mis on põhjustatud mittearvulise väärtuse ruutjuure hankimisest (viga 13).
Teisest küljest peate kasutajat teavitama, kui tööleht on kaitstud ja valik sisaldab ühte või mitut lukustatud lahtrit. (Vastasel juhul võib kasutaja arvata, et makro töötas, kuigi see tegelikult ei toiminud.) Katse kirjutada kaitstud töölehel lukustatud lahtrisse põhjustab vea 1004.
Sub SelectionSqrt()
Dim cell as Range
Dim ErrMsg stringina
Kui TypeName(Selection) <> "Range" Seejärel välju Sub
Error GoTo ErrorHandler
Iga valitud lahtri jaoks
lahter.Väärtus = Sqr(lahter.Väärtus)
Järgmine lahter
Välju Sub
ErrorHandler:
Valige Case Err.Number
Juhtum 5 'Negatiivne arv
Jätka järgmisena
Juhtum 13 „Tüübi mittevastavus
Jätka järgmisena
Juhtum 1004 'Lukustatud lahter, kaitstud leht
MsgBox "Cell on lukus. Proovi uuesti.", vbCritical, cell.Aadress
Välju Sub
Juhtum muu
ErrMsg = Viga(Err.Number)
MsgBox "ERROR: " & ErrMsg, vbCritical, cell.Address
Välju Sub
Lõpeta Vali
Lõpeta alam
Kui ilmneb käitustõrge, hüppab käitamine koodile, mis algab sildiga ErrorHandler. Juhtumi valimise struktuur testib kolme levinud veanumbrit. Kui veanumber on 5 või 13, jätkub täitmine järgmisest lausest. (Teisisõnu tõrget ignoreeritakse.) Kui aga vea number on 1004, annab rutiin kasutajale nõu ja seejärel lõpeb. Viimane juhtum, ootamatute vigade kogumik, püüab kõik muud vead kinni ja kuvab tegeliku veateate.