VBA hibakezelés - Útmutató az Excel VBA hibakezeléséhez

Tartalomjegyzék

Excel VBA hibakezelés

A VBA-ban, amikor kódokkal dolgozunk, sokféle hibával találkozhatunk, és a hibák elhárításának módja Hibakezelés néven ismert, most a szintaxisban előfordulhatnak olyan hibák, amelyek maga az Excel kiemeli, de ha van valami hiba ami kívül esik a tartományon, vagy valami, ami nem létezik, az excel felugró számot ad nekünk ugyanezért, fontos tudni, hogy melyik hibakód melyik hibához tartozik, hogy azonosítsuk a hibát a kódban.

Az Excel VBA-ban bármilyen kódkészlet végrehajtása közben valamiféle hibákat kapunk. Ezen hibák egy része szintaktikai hiba; néhány olyan hiba, amely nem futtatható. A szintaktikai hiba az, amikor a felhasználó elköveti, és maga az excel vörös színnel kiemeli. De ha bármilyen más típusú futási hiba van, akkor hogyan kezeljük azt, és hogyan juthatunk túl ezen, erre kitérünk ebben a cikkben.

A szintaxis hibákon kívül a többi futási hibát a kódkészletek végrehajtása során kell kezelni. Először hadd mondjak egy példát a másik futásidejű hiba előfordulására. Vessen egy pillantást az alábbi kódra,

Ez egy mintakód, végrehajtásakor az msgbox függvényben írtakat adja vissza. De mivel láthatjuk, hogy a kód második sorában 4/0 van, ami matematikai értelemben nem lehetséges, így futási hibát ad vissza. Végezzük el a fenti kódot, és nézzük meg a hibát.

Ezt a hibát kapjuk az adott kód futtatása közben. Most, hogyan kezeljük ezt a hibát, a Hibakezelés teszi.

A hibák kezelésére két módszer létezik:

  1. A Goto hiba esetén és
  2. On Error Folytatás Következő.

Magyarázat

Amint azt a fentiekben kifejtettük, sokféle hibát tapasztalunk a VBA-ban. Egyesek szintaxist, mások pedig futási időt jelentenek. A szintaxis hibák már piros színnel vannak kiemelve, lásd például a képernyőképet,

Míg a másik a futási hibák. Alapvetően az excel a következő három dolgot fogja megtenni, vagy hibát mutat, vagy figyelmen kívül hagyja ezt a hibát, vagy egy bizonyos utasításkészletet mutat. Az ilyen feladatok végrehajtásához utasításokat kell adnunk, és ezt hívjuk Hibakezelésnek.

Hogyan kezeljük a hibákat a VBA kódban?

1. példa

Az első példaként vegyük az első kódot, amelyet bemutatónak vettünk. A fenti példában láttuk, hogy a kód futási hibát ad a második msgbox függvénynél.

Írja be a következő kódot az alfunkció megnyitása után,

Kód:

Alminta () bekapcsolva Hiba Folytatás Következő MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub

Most, amikor végrehajtjuk a fenti kódot, azt látjuk, hogy a hibás kódsort nem hajtják végre. Az Excel kihagyja ezt a sort, és folytatja a következő sort.

Van egy másik módszer a hiba kezelésére: VBA Goto Statement. Az excelt nyújtjuk célként, ahová el kell menni, ha hibát talál. A korábbi hibakezelő kód helyett beillesztettük, felírtuk a következő kódot,

Kód:

Alminta () hiba esetén GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub

Az excel Az-t adjuk meg célállomásnak, ahova eljutunk, ha hibát talál. Most az msgbox után írjon egy másik kódot az alábbiak szerint,

Kód:

Alminta () bekapcsolva GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Kész: Kilépés az alból

Most meg kell határoznunk az az úti célt, hogy mit kell tennie, amikor az excel hibát talál a kódban.

Kód:

Alminta () bekapcsolva GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Kész: Kilépés az al-ból: MsgBox "Ez egy hiba" & Hiba.leírás End Sub

Amikor ezt a kódot futtatjuk, megjelenik az eredmény.

Ez az első msg box eredmény, és mivel tudjuk, hogy hibánk van a kódunk következő sorában, nézzük meg az eredményt, amit az excel ad.

A kódban található err.description segít megmutatni, hogy pontosan mi történt a kódban.

2. példa

Megtanultuk a kódok hibáinak kezelését. Nézzünk meg egy másik példát a hibák kezelésére. Tekintsük a következő példát a második példának.

Van egy kissé hasonló hibánk az 1. példából. A hiba a d = i / b sorban van. Most ezeket a hibákat a fent ismertetett két módszer alkalmazásával kezeljük.

Írja be a következő kódot az alfunkció megnyitása után,

Kód:

2. alminta () bekapcsolva Hiba Folytatás Következő bx Dim i egész számként, b egész számként, c egész számként, d egész számként 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. alminta () bekapcsolva GoTo bx Dim i egész számként, b egész számként, c egész számként, d egész számként i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Kilépés a bx alból: MsgBox "Ez egy újabb hiba" & Err.Description End Sub

Most, amikor végrehajtjuk a kódot, láthatjuk, hogy az excel először megadja a C értékét.

Most egy újabb lépésben megadja nekünk azt az üzenetet, amelyet megadtunk neki, amikor hibával találkozik.

Így kezeljük a normál futásidejű hibákat az Excel VBA-ban.

Dolgok, amikre emlékezni kell

A hibakezeléssel kapcsolatban néhány dologra emlékeznünk kell:

  1. On Error Resume Next, figyelmen kívül hagyja a hibát.
  2. On Error esetén a GoTo Gives excel egy célhelyet, ha hibával találkozik.
  3. A leírás arra szolgál, hogy megmutassa a felhasználó hibáját.

érdekes cikkek...