VBA klaidų tvarkymas - Klaidų tvarkymo „Excel VBA“ vadovas

„Excel VBA“ klaidų tvarkymas

VBA dirbdami su kodais galime susidurti su daugybe skirtingų tipų klaidų ir tai, kaip šalinti šias klaidas, vadinama klaidų tvarkymu, dabar gali būti keletas klaidų, padarytų sintaksėje, kuri pati „Excel“ ją pabrėžia, bet kai yra klaida kuris yra už diapazono ribų arba kažkas, ko nėra, „Excel“ suteikia mums tą patį iššokantį langą, svarbu žinoti, kuris klaidos kodas yra kokia klaida, kad būtų galima nustatyti kodo klaidą.

„Excel VBA“ vykdydami bet kokį kodų rinkinį, mes gauname tam tikras klaidas. Kai kurios iš šių klaidų yra sintaksės klaidos; kai kurios yra nevykdomos klaidos. Sintaksės klaida yra tada, kai vartotojas padarė raudoną spalvą pats „Excel“. Bet kai yra kitokio tipo vykdymo laiko klaida, kaip mes tai padarysime ir kaip mes tai peržengsime, tai aptarsime šiame straipsnyje.

Be sintaksės klaidų, kitas vykdymo laiko klaidas reikia tvarkyti vykdant bet kokį kodų rinkinį. Pirmiausia leiskite pateikti pavyzdį, kaip įvyksta kita vykdymo laiko klaida. Pažvelkite į žemiau pateiktą kodą,

Tai yra kodo pavyzdys, kai jis bus įvykdytas, jis grąžins tai, kas parašyta msgbox funkcijoje. Bet kaip matome, kad antroje kodo eilutėje yra 4/0, o tai neįmanoma matematiškai, todėl bus grąžinta vykdymo laiko klaida. Vykdykime pirmiau nurodytą kodą ir pamatysime klaidą, kurią gausime.

Tai klaida, kurią gauname vykdydami nurodytą kodą. Dabar, kaip elgtis su šia klaida, daro klaidų tvarkymas.

Yra du klaidų valdymo būdai:

  1. Apie klaidą Goto ir
  2. On Error Resume Next.

Paaiškinimas

Kaip paaiškinta aukščiau, VBA gauname daug tipų klaidų. Kai kurie yra sintaksė, o kiti - vykdymo laikas. Sintaksės klaidos jau paryškintos raudona spalva, pavyzdžiui, žr. Toliau pateiktą ekrano kopiją,

Nors kita yra vykdymo laiko klaidos. Iš esmės „Excel“ atliks šiuos tris dalykus: arba parodys klaidą, arba ignoruos tą klaidą, arba parodys tam tikrą instrukcijų rinkinį. Norėdami atlikti tokias užduotis, turime duoti instrukcijas, tai vadinama klaidų tvarkymu.

Kaip tvarkyti klaidas VBA kode?

1 pavyzdys

Pirmajam pavyzdžiui paimkime pirmąjį kodą, kurį paėmėme kaip demonstraciją. Ankstesniame pavyzdyje matėme, kad kodas suteikia vykdymo laiko klaidą antroje „msgbox“ funkcijoje.

Parašę šį kodą atidarę subfunkciją,

Kodas:

Antrinis pavyzdys () Įjungus klaidą, tęsti kitą „MsgBox 4/2“ „MsgBox 4/0“

Dabar, kai vykdome aukščiau esantį kodą, matome, kad kodo eilutė, kurioje yra klaida, nėra vykdoma. „Excel“ praleidžia tą eilutę ir tęsiasi kitoje eilutėje.

Yra dar vienas būdas pašalinti klaidą - „VBA Goto“ pareiškimas. Pateikiame „Excel“ kaip tikslą, į kurį reikia kreiptis radus klaidą. Vietoj ankstesnio klaidų tvarkymo kodo įterpėme ir užrašėme šį kodą,

Kodas:

Antrinis pavyzdys () „GoTo“ klaida „MsgBox 4/2 MsgBox 4/0„ MsgBox 4/1 End Sub “

Pateikiame „Excel Az“ kaip tikslą, į kurį reikia kreiptis, jei jis randa klaidą. Dabar po „msgbox“ parašykite kitą kodą, kaip nurodyta toliau,

Kodas:

Antrinis pavyzdys () Įvykus „GoTo“ klaidai „MsgBox 4/2“ „MsgBox 4/0“ „MsgBox 4/1“ atlikta: išeikite iš antrinio

Dabar mes turime apibrėžti paskirties vietą az kaip tai, ką ji turėtų daryti, kai „Excel“ nustato kodo klaidą.

Kodas:

Antrinis pavyzdys () Dėl klaidos GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Atlikta: Išeikite iš sub az: MsgBox „Tai klaida“

Dabar, kai paleidžiame šį kodą, matome rodomą rezultatą.

Tai yra pirmasis „msg“ laukelio rezultatas ir kadangi žinome, kad kitoje kodo eilutėje turime klaidą, pažiūrėkime, ką duos „Excel“.

Aukščiau pateiktas klaidos aprašymas kode padeda mums tiksliai parodyti, kokia klaida įvyko mūsų kode.

2 pavyzdys

Mes išmokome tvarkyti klaidas savo koduose. Pažvelkime į kitą klaidų tvarkymo pavyzdį. Apsvarstykite šį kodą kaip antrąjį pavyzdį.

Mes turime šiek tiek panašią klaidą iš 1 pavyzdžio. Klaida yra d = i / b eilutėje. Dabar šias klaidas spręsime naudodami du aukščiau paaiškintus metodus.

Parašę šį kodą atidarę subfunkciją,

Kodas:

2 antrasis pavyzdys () Įjungus klaidą, tęsti kitą bx Dim i kaip sveikąjį skaičių, b kaip sveikąjį skaičių, c kaip sveikąjį skaičių, d kaip sveikąjį skaičių i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub

Now when we execute our code, we can see that it ignores the second line and just displays the value for C.

The above error handler was a resume next, and now we will use the Go to wherein we will tell we excel a destination to go when it encounters an error. Write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d

The bx is a destination given when it encounters an error after msgbox D write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

2 antrasis pavyzdys () Dėl klaidos „GoTo bx Dim i“ kaip sveikasis skaičius, b kaip sveikas skaičius, c kaip sveikas skaičius, d kaip sveikas skaičius i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Išeikite iš sub bx: MsgBox „Tai dar viena klaida“ ir klaidos aprašo pabaigos antrinis

Dabar, kai vykdome kodą, galime pamatyti, kad „Excel“ pirmiausia suteikia mums C vertę.

Dabar atlikdami kitą veiksmą, jis suteiks mums greitą pranešimą, kurį pateikėme, kai aptiko klaidą.

Taip mes tvarkome įprastas „Excel VBA“ vykdymo laiko klaidas.

Ką reikia atsiminti

Yra keli dalykai, kuriuos turime atsiminti apie klaidų tvarkymą:

  1. „On Error Resume Next“ nepaiso klaidos.
  2. Įjungus klaidą „GoTo Gives“ išskiria tikslą, kai aptinka klaidą.
  3. Aprašas naudojamas norint parodyti tikslią klaidą, kuri įvyko vartotojui.

Įdomios straipsniai...