VBA On Error GoTo - A VBA On hibakivonatok típusai

Tartalomjegyzék

Excel VBA On GoTo hiba

A hibák minden kódoló nyelv részét képezik, és a VBA makrók nem különböznek ettől. Véleményem szerint a hiba előfordulásának megállapítása az elvégzett munka 90% -a, 10% pedig a hiba kijavításában rejlik. Minden kódoló nyelvben a kódolók a hibáik kezelésének saját módját használják a kódolásuk során, így mi is ezt használjuk a VBA kódolásban. Gyakran figyelmen kívül kell hagynunk a hibát, vagy gyakran előfordulhat, hogy a hiba bekövetkezésekor konkrét dolgokra szeretnénk térni. Az „On Error” az az állítás, amelyet a VBA-ban kell használnunk a hibák kezeléséhez.

Ennek az állításnak három típusú állítása van, és az alábbiakban felsoroljuk.

  1. On Error Goto 0
  2. On Error Goto (címke)
  3. On Error Folytatás Következő

Ebben a cikkben meglátjuk, hogyan használják ezt a három állítást a VBA kódolásban bármilyen hiba kezelésére.

Hogyan kell használni a VBA-t a hibamegállapításokon?

# 1 - On Error Folytatás Következő

Amint maga a nyilatkozat mondja, a „On Error Resume Next” azt jelenti, amikor a hiba a kódban bekövetkezik, a kód következő sorának „folytatását” a hibasor-kód figyelmen kívül hagyásával. Most vessen egy pillantást az alábbi kódra.

Az alábbi kódban megemlítettem a munkalap nevét, és kértem, hogy írja be az értéket az első cellába „Hibatesztelés” néven.

Kód:

Sub On_Error_Resume_Next () Munkalapok ("Ws 1"). Válassza ki a tartományt ("A1"). Érték = "Hiba tesztelése" munkalapok ("Ws 2"). Válassza ki a tartományt ("A1"). Érték = "Hiba tesztelése" munkalapok ( "Ws 3"). Válassza ki a tartományt ("A1"). Érték = "Hibatesztelés" munkalapok ("Ws 4"). Válassza ki a tartományt ("A1").

Most a munkafüzetemben vannak az alábbi munkalapok.

  • Futtatom a kódot, és meglátom, mi történik.
  • Megkaptuk az „Subscript Out of Range” hibát, kattintson a „Debug” gombra, hogy megnézze, melyik sorban kaptuk a hibát.
  • Tehát a „Munkalapok („ Ws 3 ”) sorban. Válassza ki. A munkafüzetünkben ugyanis nincs „Ws 3” nevű munkalap, ezért hibába ütközött.

Ilyen esetekben érdemes figyelmen kívül hagyni a hibát, és folytatni a kód végrehajtását a következő sorra. Itt jelenik meg a képen a „On Error Resume Next” hibakezelő.

  • Csak annyit kell tennünk, hogy hozzáadjuk a „On Error Resume Next” sort a makró elejéhez.

Most hajtsa végre ezt a kódot, és nem jelenít meg hibaüzenetet, mert amikor a kód hibával találkozik, figyelmen kívül hagyja a hibát és folytatja a következő kódsorral.

# 2 - On GoTo 0 hiba

Ez nem egy hibakezelő, inkább egy hibaüzenet-engedélyező, miután letiltottuk a hibaüzenetet az „On Error Resume Next” utasítással.

A „Folytatás következő” utasítás használatakor a VBA makrók figyelmen kívül hagyják az esetleges hibákat, és folytatják a következő kódsorral. De nem akarjuk, hogy ez folyamatosan megtörténjen, mert néhány hibát szándékosan figyelmen kívül kell hagynunk, másokat pedig értesítésre van szükségünk.

Ha bármely meghatározott kódkészlet hibát dob ​​a kódblokkban, akkor csak nekünk kell figyelmen kívül hagynunk a kód más részeiben előforduló hibákat. Nem akarjuk figyelmen kívül hagyni a hibát.

  • Nézze meg az alábbi képet az „On Error GoTo 0” utasítás használatáról.

Tehát most a hibákat figyelmen kívül hagyjuk, amíg a kód meg nem találja a hibaüzenet-engedélyezőt „On Error GoTo 0”, amint ez a kódsor visszaállítja a makrókat a normál állapotba, és a szokásos módon elkezd hibaüzeneteket dobni.

# 3 - On GoTo Label

Láttuk, hogyan lehet figyelmen kívül hagyni a hibát, és hogyan lehet engedélyezni a hibaüzenet visszaküldését. Most ezt a módszert használva egy adott kódsorra léphetünk.

Ebben a módszerben a „Label” azt jelenti, hogy bármilyen nevet adhatunk ennek a címkének, és ugyanazt a címkét kell megadni a szükséges kódsorban is.

Nézze meg például ugyanazt a kódot a fenti példából.

Most futtassuk soronként a kódot az F8 funkciógomb megnyomásával.

Most a makró beolvassa a hibakezelő utasítást; nyomja meg az F8 billentyűt az első 2 munkalap kód végrehajtásához.

Most a makró végrehajtja a harmadik munkalap kódot, amely nincs a munkafüzetben, nyomja meg az F8 billentyűt, és nézze meg, mi történik.

Mivel a makró hibát észlelt az alábbi kódsorban, a hibakezelő „ErrorMessage” címkére ugrott, amelyet az „On Error GoTo (Label)” utasítás ismertetett.

Most az üzenetmezőben az „Hiba történt és kilép a makróból” üzenet jelenik meg.

Dolgok, amikre emlékezni kell

  • A Vba On Error A GoTo 0 ismét engedélyezi a hibaértesítést, ezért ne felejtse el ezt hozzáadni, miután megadta a hibakezelőt.
  • Teljesen biztosnak kell lennie abban, hogy a kód melyik részében szeretné figyelmen kívül hagyni a hibát, ezért csak a kódblokkhoz csatolja a hibakezelőt.

érdekes cikkek...