Az összes VBA hiba nem egyenlő. Vannak, akik komolyak, és vannak, amelyek kevésbé komolyak. Bár figyelmen kívül hagyhatja azokat a hibákat, amelyeket jelentéktelennek tart, más, súlyosabb hibákkal kell foglalkoznia. Bizonyos esetekben meg kell határoznia a felmerülő konkrét hibát.
Minden hibatípusnak hivatalos száma van. Ha hiba történik, az Excel a hibaszámot egy Error objektumban tárolja. Ennek az objektumnak a Number tulajdonsága a hibaszámot, a Leírás tulajdonsága pedig a hiba leírását tartalmazza. Például a következő utasítás megjeleníti a hiba számát, kettőspontját és a hiba leírását:
MsgBox Err.Number & ": " & Err.Description
Ne feledje, hogy az Excel hibaüzenetei nem mindig nagyon hasznosak – de ezt Ön már tudja.
A következő eljárás bemutatja, hogyan állapítható meg, melyik hiba történt. Ebben az esetben nyugodtan figyelmen kívül hagyhatja azokat a hibákat, amelyeket egy nem pozitív szám négyzetgyökének megkísérlése okoz (azaz 5-ös hiba), vagy azokat a hibákat, amelyeket egy nem numerikus érték négyzetgyökének megkísérlése okoz (13-as hiba).
Másrészt tájékoztatnia kell a felhasználót, ha a munkalap védett, és a kijelölés egy vagy több zárolt cellát tartalmaz. (Egyébként a felhasználó azt gondolhatja, hogy a makró működött, amikor valójában nem.) Ha egy védett munkalap zárolt cellájába próbál írni, az 1004-es hibát okoz.
Sub SelectionSqrt()
Dim cell As Range
Dim ErrMsg As String
Ha TypeName(Selection) <> "Tartomány", akkor lépjen ki az alból
Error GoTo ErrorHandler
Minden egyes kiválasztott cellához
cella.Érték = Sqr(cella.Érték)
Következő cella
Exit Sub
ErrorHandler:
Válassza a Case Err.Number lehetőséget
5. eset „Negatív szám
Folytatás Tovább
13. eset „Típuseltérés
Folytatás Tovább
1004-es eset „Zárt cella, védett lap
MsgBox "Cell zárva van. Próbáld újra." vbCritical, cell.Address
Exit Sub
Más eset
ErrMsg = Hiba(Err.Number)
MsgBox "ERROR: " & ErrMsg, vbCritical, cell.Address
Exit Sub
Vége kiválasztása
Vége Sub
Futásidejű hiba esetén a végrehajtás az ErrorHandler címkével kezdődő kódra ugrik. A Select Case struktúra három gyakori hibaszámot tesztel. Ha a hibaszám 5 vagy 13, a végrehajtás a következő utasítással folytatódik. (Más szóval a hiba figyelmen kívül marad.) De ha a hibaszám 1004, a rutin értesíti a felhasználót, majd véget ér. Az utolsó eset, a váratlan hibák gyűjtője, csapdába ejti az összes többi hibát, és megjeleníti a tényleges hibaüzenetet.