VBA On Error GoTo | Kļūdu paziņojumu veidi VBA

Excel VBA On Error GoTo

Kļūdas ir neatņemama jebkuras kodēšanas valodas daļa, un VBA makro neatšķiras no tā. Manuprāt, kļūdas rašanās iemesls ir 90% no paveiktā darba, bet 10% - kā novērst šo kļūdu. Katrā kodēšanas valodā kodētāji izmanto savu veidu, kā rīkoties ar kļūdām kodēšanā, tāpēc arī mēs to izmantojam VBA kodēšanā. Bieži reizes mums ir jāignorē kļūda vai bieži mēs vēlamies pievērsties konkrētām lietām, kad rodas kļūda. “On Error” ir paziņojums, kas mums jāizmanto VBA, lai apstrādātu kļūdas.

Šim paziņojumam ir trīs veidu apgalvojumi, un zemāk ir saraksts.

  1. Par kļūdu Goto 0
  2. Par kļūdu Goto [label]
  3. On Error Resume Next

Šajā rakstā mēs redzēsim, kā šie trīs apgalvojumi tiek izmantoti VBA kodēšanā, lai apstrādātu jebkāda veida kļūdas.

Kā lietot VBA kļūdu paziņojumos?

Šo VBA On Error GoTo paziņojuma veidni varat lejupielādēt šeit - VBA On Error GoTo paziņojuma veidne

# 1 - ieslēdzot kļūdu, atsākt nākamo

Tā kā pašā paziņojumā teikts “On Error Resume Next” nozīmē ikreiz, kad rodas kļūda kodā, “atsākt” nākamo koda rindu, ignorējot kļūdas līnijas kodu. Tagad ieskatieties zemāk redzamajā kodā.

Zemāk esošajā kodā esmu pieminējis darblapu nosaukumus un lūdzis ievadīt vērtību pirmajā šūnā kā “Kļūdu pārbaude”.

Kods:

 Sub On_Error_Resume_Next () darblapas ("Ws 1"). Atlasiet diapazonu ("A1"). Vērtība = "Error Testing" darblapas ("Ws 2"). Atlasiet diapazonu ("A1"). Value = "Error Testing" darblapas ( "Ws 3"). Atlasiet diapazonu ("A1"). Vērtība = "Kļūdu pārbaude" darblapas ("Ws 4"). Atlasiet diapazonu ("A1"). Vērtība = "Kļūdu pārbaude" End Sub 

Tagad manā darbgrāmatā ir zemāk esošās darblapas.

  • Es palaidīšu kodu un redzēšu, kas notiks.

  • Mēs saņēmām kļūdu “Subscript Out of Range”, noklikšķiniet uz “Debug”, lai redzētu, kurā rindā mēs saņēmām kļūdu.

  • Tātad rindā “Darblapas (“ Ws 3 ”). Atlasiet” mēs saņēmām kļūdu, tas ir tāpēc, ka mūsu darbgrāmatā nav nevienas darblapas ar nosaukumu “Ws 3”, tāpēc radās kļūda.

Šādos gadījumos mēs varētu vēlēties ignorēt kļūdu un atsākt koda izpildi nākamajā rindā. Šeit redzams mūsu kļūdu apstrādātājs “On Error Resume Next”.

  • Viss, kas mums jādara, ir makro sākumā pievienot rindiņu “On Error Resume Next”.

Tagad izpildiet šo kodu, un tajā netiks rādīts kļūdas ziņojums, jo ikreiz, kad kods saskaras ar kļūdu, tas kļūdu ignorēs un atgriezīsies nākamajā koda rindā.

# 2 - ieslēgta kļūda GoTo 0

Tas nav kļūdu apstrādātājs, drīzāk kļūdas ziņojumu iespējotājs pēc kļūdas ziņojuma atspējošanas, izmantojot paziņojumu “On Error Resume Next”.

Vienu, kuru izmantojat paziņojumu “Resume Next”, VBA makro sāk ignorēt jebkādas kļūdas, kas rodas, un turpina turpināt nākamo kodu rindu. Bet mēs nevēlamies, lai tas notiek visu laiku, jo dažas kļūdas mums ir jāaplūko apzināti, bet citām - paziņojums.

Ja kāda konkrēta kodu kopa rada kļūdu šajā koda blokā, mums ir jāignorē kļūda tikai citās koda daļās, un mēs nevēlamies ignorēt kļūdu.

  • Apskatiet zemāk esošo attēlu, kā izmantot paziņojumu “On Error GoTo 0”.

Tāpēc tagad kļūdas tiks ignorētas, līdz kods atradīs kļūdas paziņotāju iespējotāju “On Error GoTo 0”. Kad šī koda rinda atjauno makro normālu stāvokli un sāk mest kļūdu ziņojumus, kā parasti.

# 3 - ieslēgta kļūda GoTo Label

Mēs esam redzējuši, kā ignorēt kļūdu un kā iespējot atpakaļ paziņojumu par kļūdu. Tagad, izmantojot šo metodi, mēs varam pāriet uz noteiktu koda rindu.

Šajā metodē “etiķete” nozīmē, ka šai etiķetei varam piešķirt jebkuru nosaukumu, un tā pati etiķete jānorāda arī vajadzīgajā koda rindā.

Piemēram, aplūkojiet to pašu kodu no iepriekš minētā piemēra.

Tagad izpildīsim koda rindu pa rindai, nospiežot funkciju taustiņu F8.

Tagad makro nolasīs kļūdu apstrādātāja paziņojumu, nospiediet taustiņu F8, lai izpildītu pirmos 2 darblapas kodu.

Tagad makro gatavojas izpildīt trešo darblapas kodu, kura darbgrāmatā nav, nospiediet taustiņu F8 un redziet, kas notiek.

Tā kā makro zemāk esošajā koda rindā radās kļūda, tas ir pārlēcis uz kļūdu apstrādātāja iezīmi “ErrorMessage”, kas tika aprakstīts, izmantojot paziņojumu “On Error GoTo [Label]”.

Tagad ziņojumu lodziņā ziņojums tiks parādīts kā “Notika kļūda un izejot no makro”.

Atceramās lietas

  • VBA On Error GoTo 0 vēlreiz iespējos paziņojumu par kļūdu, tāpēc neaizmirstiet to pievienot pēc kļūdu apstrādātāja piegādes.
  • Jums ir jābūt pilnīgi pārliecinātam, kurā koda daļā vēlaties ignorēt kļūdu, tāpēc pievienojiet kļūdu apstrādātāju tikai šim koda blokam.

$config[zx-auto] not found$config[zx-overlay] not found