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.
- On Error Goto 0
- On Error Goto (címke)
- 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.