Excel VBA hibakezelés
A Hibakezelés nagyon hasznos és jelentős mechanizmus a nyelvek, például a VBA programozásához. A hibakezelés vagy -megelőzés a hibakezelés egyik aspektusa, amely hatékony és jelentős intézkedések meghozatalát jelenti a VBA-parancsfájlban a hiba felbukkanó üzenet előfordulásának elkerülése érdekében
Különböző típusú hibák a VBA-ban
- Szintaxishiba vagy elemzési hiba
- Összeállítási vagy fordítási hiba
- Futtatási hiba
- Logikai hiba
A fenti hibák kijavíthatók az alábbiakban említett hibakeresési és a kód közé beillesztett különféle „On Error” nyilatkozatok segítségével.
On Error Folytatás Next
0-os hiba esetén
Hiba történt
On Goto -1 hiba
VBA hibakezelés különféle 'ON ERROR' nyilatkozatok segítségével
Itt letöltheti ezt a VBA hibakezelő Excel sablont - VBA hibakezelő Excel sablon1. példa - VBA fordítási hibák
Hiba történt a VBA-kód nyilatkozatában vagy szintaxisában, ha tévesen ír be egy kódot, akkor az az eszköz beállítási lehetőségeitől függően vörös színű lesz (ha az Automatikus szintaxis-ellenőrzést választotta).
A kód helytelen szintaxisú futtatásakor megjelenik egy felbukkanó hibaüzenet mező.
Kód:
Sub SYNTAX_ERROR () MsgBox ez az első programom a Sub Sub befejezése
A „COMPILE ERROR: VARIABLE NOT DEFINED” a leggyakoribb hiba, amely felugró üzenetként jelenik meg. Ha a referenciaváltozó nincs meghatározva, akkor ez a hiba jelentkezik.
Kód:
Al VBA_FORMAT1 () A = 19049.83 A = formátum (A, "STANDARD") MsgBox A vége Sub
A fenti példában nem deklaráltam a változót karakterlánccal, ezért ez a hiba fordul elő. Tehát egy változót Dim A As String- ként kell deklarálnom .
Kód:
Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Formátum (A, "STANDARD") MsgBox A End Sub
2. példa - VBA futásidejű hiba
Ha lehetetlen matematikai utasítások vagy kifejezések jelennek meg egy utasításban, akkor ez a futásidejű hiba jelentkezik.
Kód:
Sub RUNTIME_1 () MsgBox 6/0 End Sub
3. példa - VBA logikai hibák vagy hibák
Ezeket a hibákat nagyon nehéz nyomon követni, sem a kiemelés, sem a felbukkanó hibaüzenet nem jelenik meg. váratlan műveleteket és helytelen eredményeket eredményez.
Példa: Ha két változó van jelen a kódban, akkor hibás lehet. Ebben az esetben logikai hiba lép fel.
Hogyan lehet megelőzni a hibákat a VBA-ban?
Nézzük meg, hogyan lehet megelőzni a fenti különféle hibatípusokat a VBA Excel programban.
1. lépés: VB szerkesztő ablak megnyitása Válassza ki vagy kattintson a Visual Basic elemre a Kód csoportban a Fejlesztő lapon, vagy közvetlenül kattintson az Alt + F11 gyorsbillentyűre.
2. lépés: Üres modul létrehozásához a Microsoft excel objektumok alatt kattintson jobb egérgombbal az 1. lapon (VB_ERROR KEZELÉS) és helyezze be a modult, hogy új üres modul jusson létre.
VBA hibakezelés a hibakeresési opcióval
Jobb, ha a kódot lefuttatjuk, mielőtt futtatnánk. Az összeállítás követéséhez az alábbi lépéseket kell követni. A VB menü eszköztárán a Hibakeresés opció alatt ki kell választanunk egy fordító VBA projektet. Ha rákattint, lépésről lépésre ellenőrzi a kódot, miután megtalálta a hibát, kiemeli és megjelenik a felbukkanó üzenet, ezért ki kell javítania. a javítás után össze kell fordítania a kód következő hibájának megtalálásához.
VBA hibakezelés különféle 'ON ERROR' nyilatkozatok segítségével
1. On Error Folytatás Next
Itt a hibát figyelmen kívül hagyják, és a kód továbblép.
Az alábbiakban említett példában a 6 nem osztható nullával, ha úgy futtatja, hogy nem adja meg a Hiba folytatása következő utasítás bejegyzését, akkor az alább említett futásidejű hiba jelentkezik.
Kód:
Sub RUNTIME_1 () MsgBox 6/0 End Sub
Ha az On Error Resume Next elemet a kód tetejére írja be az Sub utasítás után, akkor figyelmen kívül hagyja a futásidejű hibát, és továbbmegy a következő utasításra, amelynek eredményeként 6/2, azaz 3 lesz (Popup üzenődoboz ennek eredményével).
Kód:
Sub RUNTIME_2 () On Error Folytatás Következő MsgBox 6/0 MsgBox 6/2 End Sub
2. Hiba a GoTo 0 és a Hiba GoTo -1 esetén
'On Error GoTo 0' esetén leállítja a kódot a hibát okozó sorban, és egy üzenetmezőt jelenít meg, amely leírja vagy jelzi a hibát.
Kód:
Sub onError_Go_to_0 () On GoTo 0 hiba. Öld meg a "C: TempFile.exe" tartományt ("A1"). Érték = 100 / "PETER" Vége Sub
Általában bemutatja az alapértelmezett hibaellenőrzési viselkedést, ez akkor fontos, ha azt az „On Error Resume Next” -vel együtt használják.
Általában megfigyelheti a Futásidejű hibaüzenet mezőt, amely a 'Folytatás', 'Vége', 'Hibakeresés' és 'Súgó' lehetőségeket tartalmazza. nézzük meg mindegyik felhasználását.
- A folytatás opció figyelmen kívül hagyja a kivételt, és folytatja a kódot, ha lehetséges.
- A befejezés opció leállítja a programot.
- A hibakeresési lehetőség kiemeli azt az állítást, ahol a hiba történt. amely segít a kód hibakeresésében vagy kijavításában.
- A Súgó opcióval megnyithatja a Microsoft MSDN súgóoldalt.
On Error GoTo 0 On On Error folytatása Next
Kód:
Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Követés "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub
A fenti kódban figyelmen kívül hagyja a hibákat, amíg el nem éri az On Error GoTo 0 utasítást. A On Hiba GoTo 0 utasítás után a kód visszatér vagy visszatér a normál hibaellenőrzéshez, és kiváltja a várható hibát. A fenti kód futtatásakor megmutatja a megosztási hibát, azaz a típus eltérését (a numerikus érték nem osztható szövegesen).
On Go Goo 0 esetén letiltja a VBA-kódban jelenleg jelen lévő összes csapdázást, azaz kapcsolja ki a hibakezelést a fő kódban, míg az On Error GoTo -1 törli a hibakezelést, és olyan értékre állítja, amely segít, vagy lehetővé teszi egy új hibacsapda létrehozását.
3. Hiba esetén a GoTo <CÍM
VBA: a programvezérlés átvitele a címke által követett sorra, ha futási hibák fordulnak elő, azaz a kód ugrik a megadott címkére. Ebben az esetben a kivétel sor és a címke közötti kód utasításokat nem hajtják végre.
Ez a módszer alkalmasabb és jelentősebb a program kecses kilépésére, ha a végrehajtás során bármilyen súlyos végzetes hiba jelentkezik.
Az alább említett VBA kódban, amint a hiba a 3. sorban jelentkezik, a program átadja a vezérlést a 6. sor, azaz címkének (a felbukkanó üzenet „Kivételkezelő ” ként jelenik meg).
Kód:
Sub OnError_Go_to_Label () Hiba GoTo Error_handler: MsgBox 9/0 MsgBox "Ez a sor nem kerül végrehajtásra." Exit Sub Error_handler: MsgBox "kivételkezelő" End Sub
Itt észreveheti, hogy az „Exit Sub” parancsot közvetlenül a „Error_handler:” címke előtt kell használni, ezt annak biztosítására használják, hogy a Hibakezelő kódblokkja megálljon, vagy nem hajtódik végre, ha nincs hiba. Most elmentheti a munkafüzetét „Excel makrokompatibilis munkafüzetként”. A munkalap bal sarkában található Mentés gombra kattintva.
Ha ismét megnyit egy fájlt, akkor rákattinthat a gyorsbillentyűre, azaz az Fn + Alt + f8, megjelenik a „Makró” párbeszédpanel, ahol futtathatja a választott mentett makrokódot, vagy az Fn + Alt + F11 gombra kattintva egy teljes makróablak.
Dolgok, amikre emlékezni kell
- A kód írása előtt meg kell győződnie arról, hogy a nem kezelt hibák törése be van-e jelölve vagy hibásan van kiválasztva. a csapdázási opció általában az eszköz VBA eszköztárának beállításai alatt.
- Ez egy alapértelmezett beállítás, amely segít megállítani a kódot a nem kezelt hibák esetén.
- Minden hiba törése: Megállítja a kódot minden típusú hiba esetén.
- Betörési osztálymodul: Ha egy objektumot, például felhasználói űrlapot használunk a kódban, ki kell emelnie, hogy a hibát okozó pontos sor jelenik meg.
Ajánlott cikkek
Ez egy útmutató a VBA Hibakezeléshez. Itt tárgyaljuk, hogyan lehet használni a VBA hibakezelést Excelben, néhány gyakorlati példával és letölthető Excel sablonnal együtt. Megnézheti más javasolt cikkeinket -
- VBA deklaráló tömb (példák)
- VBA hibás
- VBA védelem nélküli lap
- VBA oszlopok Excel sablonok
- VBA Environ