Všechny chyby VBA nejsou vytvořeny stejně. Některé jsou vážné a některé méně závažné. I když můžete ignorovat chyby, které považujete za bezvýznamné, musíte se vypořádat s jinými, závažnějšími chybami. V některých případech je třeba identifikovat konkrétní chybu, ke které dochází.
Každý typ chyby má oficiální číslo. Když dojde k chybě, Excel uloží číslo chyby do objektu Error s názvem Err. Vlastnost Number tohoto objektu obsahuje číslo chyby a vlastnost Description obsahuje popis chyby. Například následující příkaz zobrazuje číslo chyby, dvojtečku a popis chyby:
MsgBox Err.Number & ": " & Err.Description
Mějte na paměti, že chybové zprávy aplikace Excel nejsou vždy velmi užitečné – ale to už víte.
Následující postup ukazuje, jak zjistit, ke které chybě došlo. V tomto případě můžete bezpečně ignorovat chyby způsobené pokusem získat druhou odmocninu nekladného čísla (tj. chyba 5) nebo chyby způsobené pokusem získat druhou odmocninu nenumerické hodnoty (chyba 13).
Na druhou stranu musíte uživatele informovat, pokud je list chráněný a výběr obsahuje jednu nebo více uzamčených buněk. (V opačném případě si uživatel může myslet, že makro fungovalo, i když ve skutečnosti ne.) Pokus o zápis do uzamčené buňky v chráněném listu způsobí chybu 1004.
Sub SelectionSqrt()
Ztlumit buňku jako rozsah
Dim ErrMsg jako řetězec
If TypeName(Selection) <> "Range" Then Exit Sub
On Error GoTo ErrorHandler
Pro každou buňku ve výběru
cell.Value = Sqr(cell.Value)
Další buňka
Exit Sub
ErrorHandler:
Vyberte číslo chyby případu
Případ 5 'Záporné číslo
Pokračovat dále
Případ 13 „Neshoda typu
Pokračovat dále
Pouzdro 1004 'Uzamčená buňka, chráněný list
MsgBox "Buňka je uzamčena. Zkuste to znovu.", vbCritical, cell.Address
Exit Sub
Případ Else
ErrMsg = Error (Err.Number)
MsgBox "ERROR: " & ErrMsg, vbCritical, cell.Address
Exit Sub
Konec Vyberte
End Sub
Když dojde k chybě běhu, spuštění skočí na kód začínající na štítku ErrorHandler. Struktura Select Case testuje tři běžná čísla chyb. Pokud je číslo chyby 5 nebo 13, provádění bude pokračovat dalším příkazem. (Jinými slovy, chyba je ignorována.) Ale pokud je číslo chyby 1004, rutina informuje uživatele a poté skončí. Poslední případ, souhrn pro neočekávané chyby, zachytí všechny ostatní chyby a zobrazí skutečnou chybovou zprávu.