Të gjitha gabimet VBA nuk janë krijuar të barabarta. Disa janë serioze, dhe disa janë më pak serioze. Edhe pse mund t'i injoroni gabimet që i konsideroni si të parëndësishme, duhet të merreni me gabime të tjera, më serioze. Në disa raste, ju duhet të identifikoni gabimin specifik që ndodh.
Çdo lloj gabimi ka një numër zyrtar. Kur ndodh një gabim, Excel ruan numrin e gabimit në një objekt Gabim të quajtur Err. Vetia Number e këtij objekti përmban numrin e gabimit dhe vetia e tij Description përmban një përshkrim të gabimit. Për shembull, deklarata e mëposhtme shfaq numrin e gabimit, një dy pika dhe një përshkrim të gabimit:
MsgBox Err.Number & ": " & Err.Description
Mbani në mend se mesazhet e gabimit në Excel nuk janë gjithmonë shumë të dobishme - por ju tashmë e dini këtë.
Procedura e mëposhtme tregon se si të përcaktohet se cili gabim ka ndodhur. Në këtë rast, mund të injoroni me siguri gabimet e shkaktuara nga përpjekja për të marrë rrënjën katrore të një numri jopozitiv (d.m.th., gabimi 5) ose gabimet e shkaktuara nga përpjekjet për të marrë rrënjën katrore të një vlere jonumerike (gabimi 13).
Nga ana tjetër, duhet të informoni përdoruesin nëse fleta e punës është e mbrojtur dhe zgjedhja përmban një ose më shumë qeliza të kyçura. (Përndryshe, përdoruesi mund të mendojë se makro funksionoi kur në të vërtetë nuk funksionoi.) Përpjekja për të shkruar në një qelizë të kyçur në një fletë pune të mbrojtur shkakton gabimin 1004.
Sub SelectionSqrt()
Qeliza e zbehtë si varg
Dim ErrMsg As String
Nëse TypeName(Selection) <> "Range" Pastaj Dilni Sub
Në gabim GoTo Error Handler
Për çdo qelizë në përzgjedhje
qeliza.Vlera = Sqr(qeliza.Vlera)
Qeliza tjetër
Dilni Nën
Trajuesi i gabimeve:
Zgjidhni Rastin Err.Number
Rasti 5 'Numër negativ
Resume Next
Rasti 13 'Mospërputhje tipi
Resume Next
Rasti 1004 'Qeli e mbyllur, fletë e mbrojtur
MsgBox "Qeliza është e kyçur. Provo përsëri.", vbCritical, qeliza. Adresa
Dilni Nën
Rasti tjetër
ErrMsg = Gabim (Err.Numër)
MsgBox "GABIM: " & ErrMsg, vbCritical, qelizë. Adresa
Dilni Nën
Fund Zgjidh
Fundi Nën
Kur ndodh një gabim në kohën e ekzekutimit, ekzekutimi kalon te kodi që fillon në etiketën ErrorHandler. Struktura Select Case teston tre numra gabimesh të zakonshme. Nëse numri i gabimit është 5 ose 13, ekzekutimi rifillon në deklaratën tjetër. (Me fjalë të tjera, gabimi shpërfillet.) Por nëse numri i gabimit është 1004, rutina e këshillon përdoruesin dhe më pas përfundon. Rasti i fundit, një kapje e të gjitha gabimeve të paparashikuara, bllokon të gjitha gabimet e tjera dhe shfaq mesazhin aktual të gabimit.