Visas VBA kļūdas nav vienādas. Daži no tiem ir nopietni, un daži ir mazāk nopietni. Lai gan jūs varat ignorēt kļūdas, kuras uzskatāt par nebūtiskām, jums ir jārisina citas, nopietnākas kļūdas. Dažos gadījumos jums ir jānorāda konkrētā kļūda, kas rodas.
Katram kļūdas veidam ir oficiāls numurs. Ja rodas kļūda, programma Excel saglabā kļūdas numuru objektā Error ar nosaukumu Err. Šī objekta rekvizīts Number satur kļūdas numuru, un rekvizīts Apraksts satur kļūdas aprakstu. Piemēram, šis paziņojums parāda kļūdas numuru, kolu un kļūdas aprakstu:
MsgBox Err.Number & ": " & Err.Description
Ņemiet vērā, ka Excel kļūdu ziņojumi ne vienmēr ir ļoti noderīgi, taču jūs to jau zināt.
Tālāk sniegtā procedūra parāda, kā noteikt radušos kļūdu. Šādā gadījumā varat droši ignorēt kļūdas, kas radušās, mēģinot iegūt nepozitīva skaitļa kvadrātsakni (tas ir, 5. kļūda), vai kļūdas, kas radušās, mēģinot iegūt kvadrātsakni no neskaitliskās vērtības (13. kļūda).
No otras puses, jums ir jāinformē lietotājs, ja darblapa ir aizsargāta un atlasē ir viena vai vairākas bloķētas šūnas. (Pretējā gadījumā lietotājs var domāt, ka makro darbojās, lai gan tas patiešām nedarbojās.) Mēģinot rakstīt aizsargātas darblapas bloķētā šūnā, tiek parādīta kļūda 1004.
Sub SelectionSqrt()
Aptumšot šūnu kā diapazonu
Dim ErrMsg As String
Ja TypeName(Atlase) <> "Diapazons" Pēc tam izejiet no apakšdaļas
Par kļūdu GoTo ErrorHandler
Katrai atlasītajai šūnai
šūna.Vērtība = Sqr(šūna.vērtība)
Nākamā šūna
Iziet Sub
ErrorHandler:
Atlasiet Case Err.Number
5. gadījums “Negatīvs skaitlis
Atsākt Nākamo
13. gadījums “Veidu neatbilstība
Atsākt Nākamo
Lieta 1004 'Slēgta šūna, aizsargāta lapa
MsgBox "Šūna ir bloķēta. Mēģiniet vēlreiz.", vbCritical, cell.Adrese
Iziet Sub
Cits gadījums
ErrMsg = Kļūda (Err.Number)
MsgBox "ERROR:" & ErrMsg, vbCritical, cell.Address
Iziet Sub
Beigu atlase
Beigu apakš
Kad rodas izpildlaika kļūda, izpilde pāriet uz kodu, kas sākas ar etiķeti ErrorHandler. Struktūra Select Case pārbauda trīs izplatītus kļūdu numurus. Ja kļūdas numurs ir 5 vai 13, izpilde tiek atsākta ar nākamo paziņojumu. (Citiem vārdiem sakot, kļūda tiek ignorēta.) Bet, ja kļūdas numurs ir 1004, rutīna informē lietotāju un pēc tam beidzas. Pēdējais gadījums, neparedzētu kļūdu apkopojums, fiksē visas pārējās kļūdas un parāda faktisko kļūdas ziņojumu.