Sve VBA greške nisu jednake. Neki su ozbiljni, a neki manje ozbiljni. Iako možete zanemariti pogreške koje smatrate nevažnim, morate se pozabaviti drugim, ozbiljnijim pogreškama. U nekim slučajevima morate identificirati konkretnu pogrešku koja se javlja.
Svaka vrsta greške ima službeni broj. Kada dođe do pogreške, Excel pohranjuje broj pogreške u objekt Error pod nazivom Err. Svojstvo Number ovog objekta sadrži broj pogreške, a svojstvo Description sadrži opis pogreške. Na primjer, sljedeća izjava prikazuje broj pogreške, dvotočku i opis pogreške:
MsgBox Err.Number & ": " & Err.Opis
Imajte na umu da Excel poruke o pogrešci nisu uvijek vrlo korisne — ali to već znate.
Sljedeći postupak pokazuje kako odrediti koja se pogreška dogodila. U ovom slučaju možete sa sigurnošću zanemariti pogreške uzrokovane pokušajem dobivanja kvadratnog korijena nepozitivnog broja (tj. pogreška 5) ili pogreške uzrokovane pokušajem dobivanja kvadratnog korijena nenumeričke vrijednosti (pogreška 13).
S druge strane, morate obavijestiti korisnika je li radni list zaštićen i odabir sadrži jednu ili više zaključanih ćelija. (U suprotnom, korisnik može misliti da je makronaredba radila kada stvarno nije.) Pokušaj pisanja u zaključanu ćeliju na zaštićenom radnom listu uzrokuje pogrešku 1004.
Sub SelectionSqrt()
Zatamnjena ćelija As Range
Dim ErrMsg kao niz
Ako TypeName(Odabir) <> "Range" Zatim izađite iz Sub
U slučaju pogreške Idite na ErrorHandler
Za svaku ćeliju u odabiru
cell.Value = Sqr(cell.Value)
Sljedeća ćelija
Izlaz pod
ErrorHandler:
Odaberite Broj pogreške slučaja
Slučaj 5 'Negativan broj
Nastavi Sljedeći
Slučaj 13 'Nepodudaranje vrste
Nastavi Sljedeći
Slučaj 1004 'Zaključana ćelija, zaštićeni list
MsgBox "Ćelija je zaključana. Pokušajte ponovo.", vbCritical, cell.Address
Izlaz pod
Slučaj Drugi
ErrMsg = Greška (Broj pogreške)
MsgBox "ERROR: " & ErrMsg, vbCritical, cell.Address
Izlaz pod
Kraj Odaberite
Kraj Sub
Kada se pojavi pogreška tijekom izvođenja, izvršenje skače na kod koji počinje na oznaci ErrorHandler. Struktura Select Case testira tri uobičajena broja pogrešaka. Ako je broj pogreške 5 ili 13, izvršenje se nastavlja kod sljedećeg izraza. (Drugim riječima, pogreška se zanemaruje.) Ali ako je broj pogreške 1004, rutina obavještava korisnika i zatim završava. Posljednji slučaj, hvataljka za sve neočekivane pogreške, hvata sve ostale pogreške i prikazuje stvarnu poruku o pogrešci.