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

  1. Szintaxishiba vagy elemzési hiba
  2. Összeállítási vagy fordítási hiba
  3. Futtatási hiba
  4. 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 sablon

1. 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.

Megjegyzés: A fordítás opció segítségével csak a fordítási és szintaxis hibát orvosolhatjuk.

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 -

  1. VBA deklaráló tömb (példák)
  2. VBA hibás
  3. VBA védelem nélküli lap
  4. VBA oszlopok Excel sablonok
  5. VBA Environ

Kategória: