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,
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_2.png.webp)
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.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_3.png.webp)
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:
- A Goto hiba esetén és
- 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,
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_4.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_5.png.webp)
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.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba.gif)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_6.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_7.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_8.png.webp)
Amikor ezt a kódot futtatjuk, megjelenik az eredmény.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_2.gif)
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.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_9.png.webp)
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.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_10.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_11.png.webp)
Now when we execute our code, we can see that it ignores the second line and just displays the value for C.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_12.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_13.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_14.png.webp)
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
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_15.png.webp)
Most, amikor végrehajtjuk a kódot, láthatjuk, hogy az excel először megadja a C értékét.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_3.gif)
Most egy újabb lépésben megadja nekünk azt az üzenetet, amelyet megadtunk neki, amikor hibával találkozik.
![](https://cdn.know-base.net/8048253/vba_error_handling_guide_to_error_handling_in_excel_vba_16.png.webp)
Í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:
- On Error Resume Next, figyelmen kívül hagyja a hibát.
- On Error esetén a GoTo Gives excel egy célhelyet, ha hibával találkozik.
- A leírás arra szolgál, hogy megmutassa a felhasználó hibáját.