Hiba esetén folytassa a következő: Hibakezelés az Excel VBA-ban

  • Ossza Meg Ezt
Hugh West

A Microsoft Excel VBA-ban a hibakezelés az egyik kritikus feladat. Ha Ön kódoló, akkor tudja, hogy a hibakezelés mennyire fontos a tökéletes alkalmazás létrehozásához. Bármilyen hiba egy utasításban sokféleképpen akadályozhatja a VBA kódot. Ezért óvatosnak kell lennie a hibák kezelésében a VBA kód végrehajtása során. Sok futásidejű hibával találkozhat a VBA kód használata során az Excelben. A VBA kód megoldásáhozaz egyiket, használjuk a Hiba esetén Folytassa tovább nyilatkozat.

Ebben a bemutatóban megtanulja használni a Hiba esetén Folytassa tovább utasítás az Excel VBA-ban. Ez a bemutató a megfelelő példákkal és megfelelő illusztrációkkal fog rendelkezni. Maradjon velünk.

Gyakorlati munkafüzet letöltése

VBA hiba esetén folytassa tovább.xlsm

Hibakezelés az Excel VBA-ban

A Microsoft Excel VBA-val végzett munka során sok hibával fog szembesülni az alprocedúrában. Ha a VBA nem tud végrehajtani egy utasítást, akkor futásidejű hibát dob.

Az Excel automatikusan kezeli ezeket a hibákat, így amikor futási hiba jelentkezik, egy alapértelmezett hibaüzenetet jelenít meg, például a következőt:

Nos, ezeket különféleképpen kezelhetjük néhány VBA utasítással. A későbbi fejezetekben tárgyalni fogom őket.

Bővebben: Hogyan lehet kijavítani a #REF! hibát az Excelben (6 megoldás)

A VBA hibaüzenetekről

A futásidejű hibák kezelésére az On Error utasítjuk az Excelt az On Error utasítással. Ez dönti el, hogy milyen műveleteket akarunk a továbbiakban azonnal elvégezni. Alapvetően ilyen hibakezeléssel hatástalanítjuk a hibákat.

Az Excel VBA-ban háromféle On Error utasítást (szintaxis) használunk.

  • Hiba esetén GoTo vonal
  • Hiba esetén Folytassa tovább
  • On Error GoTo 0

Ha hibát talál, használja az On Error parancsot. Ha ugyanis nem használ egy Hiba esetén deklaráció, ezek a futásidejű hibák katasztrofálisak lesznek. Hibajelzést jelenít meg, és leállítja a végrehajtást.

Amikor egy Hiba esetén utasítással bekapcsolunk egy "engedélyezett" hibakezelőt. Az "aktív" hibakezelő egy olyan engedélyezett hibakezelő, amely elindítja a hibakezelési műveletet. Ha egy hibakezelő közben hiba keletkezik, az aktuális metódus hibakezelője nem tudja elviselni a hibát. Ezután a vezérlés visszatér a hívó eljáráshoz.

Ha a hívó folyamatnak van engedélyezett hibakezelője, akkor az aktiválódik a hiba kezelésére. Ha a hívó rendszer hibakezelője ennek megfelelően foglalt, akkor a korábbi hívó eljárásokon keresztül adja vissza a vezérlést, amíg nem talál egy engedélyezett, de inaktív hibakezelőt. Ha nem talál egyetlen inaktív engedélyezett hibakezelőt sem, akkor ez azt jelenti, hogy a hiba katasztrofális a bekövetkezési pontján.

Minden alkalommal, amikor a hibakezelő visszaadja a hatalmat egy hívó eljárásnak, ez az eljárás továbbfejleszti a meglévő eljárást. A végrehajtás újraindul a jelenlegi eljárásban, abban a pillanatban, amelyet a Önéletrajz utasítás, amikor egy hibakezelő kezeli a hibákat bármelyik eljárásban.

'Hiba esetén folytassa a következőt' a VBA-ban

Most, a Hiba esetén Folytassa tovább utasítja a VBA-t, hogy hagyja figyelmen kívül a hibás kódsorokat, és azonnal folytassa a következő kódsorral. Ezt követően az Excel VBA kódok kihagyják a hibás sorokat, és a következő kódsorozatra lépnek.

A Hiba esetén Folytassa tovább utasítás arra kényszeríti a végrehajtást, hogy a parancs azonnal folytassa a futási hibát kiváltó kódsort. Ez az utasítás lehetővé teszi a végrehajtás kihagyását akkor is, ha futási hiba lép fel. Ha úgy gondoljuk, hogy egy adott kódsor hibát okozhat, helyezzük oda a hibakezelő rutint, ahelyett, hogy az eljáráson belül más helyre tennénk. Hiba esetén Folytassa tovább utasítás tétlenné válik, amikor a kódod meghív egy másik eljárást. Tehát, ha szükséged van egy illeszkedő hibakezelésre ebben a rutinban, akkor egy Hiba esetén Folytassa tovább parancsot minden egyes megnevezett mintában.

Ez akkor ésszerű, ha a kihagyható kódsor nem szükséges a makró virágzó működéséhez. De ne feledje, hogy káros lehet, ha helytelenül használja, mivel nem kívánt eredményeket hozhat.

Ne feledje:

Az On Error Resume Next utasítás nem javítja a futásidejű hibákat. Alapvetően figyelmen kívül hagyja a hibákat, ahol a VB végrehajtása a futásidejű hibát generáló utasítástól folytatódik.

Nézze meg a következő kódot:

 Sub divide() MsgBox 5 / 0 MsgBox 5 / 2 End Sub 

Megpróbáltuk az 5-öt 0-val és 1-gyel osztani. Futtassuk le a kódot, a következő kimenetet fogja mutatni:

Futtatási hibát produkál. Nem oszthatunk el egy számot 0-val. Amikor a kódot hibakereséskor a következőket látja:

Amikor a VB program hibát talál, azonnal leállítja az eljárást. A következő sort nem hajtja végre.

Most pedig valósítsuk meg a Hiba esetén Folytassa tovább utasítás a hiba utasítás előtt:

 Sub divide() On Error Resume Next MsgBox 5 / 0 MsgBox 5 / 2 End Sub 

A kód futtatása után a következőket látja:

Amint láthatja, a VBA figyelmen kívül hagyja a hibát előidéző sort, és azonnal a következő kódsorral folytatja. Ily módon a Hiba esetén Folytassa tovább utasítással kezeli a hibát az Excel VBA-ban.

Példák a 'Hiba esetén folytassa tovább' VBA-ban

A következő szakaszokban két példát fogok bemutatni a Hiba esetén Folytassa tovább utasítás, amelyet a VBA segítségével implementálhat az Excel munkalapjába. Javaslom, hogy tanulja meg és alkalmazza mindezeket a munkafüzetében. Ez biztosan növeli az Excel-tudását.

1. 'Hiba esetén folytassa a következőt' utasítás a munkalapok elrejtéséhez

Ebben a példában egy olyan VBA-kódot mutatok, amely elrejti az aktív munkafüzet összes munkalapját.

Nézze meg az alábbi képernyőképet:

Itt négy munkalapunk van, és mindegyiket elrejtjük a következő VBA-kóddal:

 Sub hide_all_sheets() Dim copies As Worksheet For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub 

A következő kód végrehajtásakor a következő futásidejű hiba jelenik meg:

Az Excel azért jeleníti meg ezt a hibát, mert egy munkafüzetben nem lehet az összes lapot elrejteni. Ezért figyelmen kívül kell hagyni a hibát. Ehhez az On Error Resume Next utasítást kell implementálnia a kódsorában.

 Sub hide_all_sheets() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub 

A VBA-kód végrehajtása után a következő kimenetet látja:

Végül a végrehajtás után nem fog hibát látni. Tehát az On Error Resume Next utasításunk valóban jól működött a VBA kódban.

Bővebben: Hibák az Excelben és jelentésük (15 különböző hiba)

2. VLOOKUP függvény a 'Hiba esetén folytassa tovább' funkcióval a VBA-ban

Ebben a példában egy példát fogok mutatni a a VLOOKUP függvény a VBA-ban Ez a VBA kód tartalmazza a Hiba esetén Folytassa tovább nyilatkozat.

Nézze meg az alábbi képernyőképet:

Itt láthatjuk néhány ember nevét és életkorát. A szomszédos táblázatban a VLOOKUP a személy nevét és életkorát.

Ehhez írja be a következő kódot:

 Sub VLOOKUP_Function() Dim i As Long For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub 

Most futtassa a makrót, és a következő hibát fogja látni:

Ez egy futásidejű hiba. Miért történik ez? Nézzük meg újra az adatállományt:

Mint látható, az "Aaron" és az "Emma" esetében nincsenek adatok. Ezért csak a VLOOKUP az első bejegyzéshez. Ezután leállítja a végrehajtást. Most, ha figyelmen kívül akarja hagyni a hibát, és folytatni akarja a többi korszak keresését, használja a Hiba esetén Folytassa tovább nyilatkozat.

 Sub VLOOKUP_Function() Dim i As Long On Error Resume Next For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub 

A VBA kód futtatása után a következő kimenetet látja:

Mint látható, a Hiba esetén Folytassa tovább paranccsal figyelmen kívül hagytuk a hibát, és megtaláltuk a többi személy életkorát. A VBA-kódunk nem találta meg Áron és Emma adatait. Ezért figyelmen kívül hagyta ezeket az értékeket, és visszaadta a többi értéket az Excel munkalapon.

Read More: [Fixed] Az Excel problémát talált egy vagy több képlethivatkozással ebben a munkalapban

Kapcsolja ki a "Hiba esetén folytassa a következőt" az Excel VBA-val

Előfordulhat olyan helyzet, amikor a VBA kód egy adott szegmensében figyelmen kívül akarja hagyni a hibákat. Ne feledje, ha a VBA kódban az On Error Resume Next utasítást használja, akkor az összes hibát kihagyja az azt követő hibákat. Ha ezt ki akarja kapcsolni, és engedélyezni akarja a hibakezelést egy másik szegmensben, akkor használja a következőt On Error GoTo 0 Ez újra engedélyezi a hibakezelést.

Általános használat:

Sub error_handling()

Hibák figyelmen kívül hagyása

Hiba esetén Folytassa tovább

// kódsorok

Hibakezelés bekapcsolása

On Error GoTo 0

//kódsorok

End sub

Nézze meg a következő VBA kódot:

 Sub error_handling() Dim i As Long 'a hiba figyelmen kívül hagyásához Hiba esetén Folytassa tovább Következő For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i 'a hiba esetén kikapcsolni Folytassa tovább On Error GoTo 0 MsgBox i / 0 End Sub 

Korábban a kódot használtuk a VLOOKUP A mi kódunk figyelmen kívül hagyja a hibákat, miközben végrehajtja a VLOOKUP de aktiválja a hibakezelést, miután a On Error GoTo 0 nyilatkozat.

Bővebben: Excel VBA: Kapcsolja ki a "Hiba esetén folytassa tovább" funkciót

VBA 'Hiba esetén GoTo'

Korábban már tárgyaltam a hibák kezelését az On Error metódus használatával. Az egész cikkünk arról szólt. Hiba esetén Folytassa tovább. A hibakezelésnek két típusa is van, amelyeket a következő fejezetekben fogok tárgyalni.

1. VBA On Error GoTo 0

A Hiba esetén Goto 0 utasítás az Excel beépített beállítása, ha a kódok nem tartalmaznak hibakezelőt. Ez alapvetően azt jelenti, hogy amikor a VBA hibát talál a On Error GoTo 0 , a program leállítja a kód futtatását, és megjeleníti a hagyományos hibaüzenet ablakot.

On Error GoTo 0 utasítás alapvetően kikapcsolja a hibakezelést a jelen eljárásban. Nem határozza meg a 0. sort a hibakezelő kód kezdeteként, még akkor sem, ha a módszer tartalmaz egy 0-ás sorszámú sort.

Nézze meg a következő kódot:

 Sub on_error_goto_0() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo 0 ActiveSheet.Name = "Copy-4" End Sub 

Ezt a kódot már megmutattuk. Ez a kód alapvetően elrejti az összes munkalapot az aktuális munkafüzetben. Most valóban van egy extra kódrészletem a következővel On Error GoTo 0 Ha futtatja a kódot, a következőket látja:

Azért mutatja ezt a hibát, mert az aktív munkafüzetben nem lehetnek azonos nevű lapok.

2. VBA On Error GoTo sor

Most már utasíthatja az Excelt arra is, hogy futtasson egy másik kódrészletet, ha bármilyen hibát talál, a Hiba esetén GoTo sor Azt mondja az Excelnek, hogy hiba észlelése után hajtson végre valamit.

A line argumentum bármilyen sorcímke vagy sorszám. Ha a kódunk bármilyen futásidejű hibát okoz, akkor a sorra lép, és a végrehajtásban aktív hibakezelőt okoz. Ne feledjük, hogy a definiált sorunknak pontosan abban az eljárásban kell lennie, mint az On Error utasításnak, különben fordítási hibát okoz.

Nézze meg a következő kódot:

 Sub on_error_goto_line() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo error_handler ActiveSheet.Name = "Copy-4" Exit Sub error_handler: MsgBox "Van egy ugyanilyen nevű lap is. Próbálj meg egy másikat." End Sub 

A kódot az előző példában láttad. Amikor a On Error GoTo 0 , hibát okozott. De itt ezt helyettesítettük a Hiba esetén GoTo sor nyilatkozat.

Most futtassa a kódot, és a következőket fogja látni:

Amint láthatjuk, nem a standard hiba párbeszédpanel jelenik meg, hanem az általunk létrehozott egyéni üzenőmező, amelyet a error_handler Ha az Excel bármilyen hibát talál, akkor az Excel átugrik a error_handler szegmens és megmutatja nekünk az üzenőmezőt.

Mi is használtunk egy Exit Sub Ha nincs a " VLOOKUP ", a VBA kódunk átnevezi az aktív lapot. Ezután itt be kell fejeznünk a végrehajtást, mert nem kell továbbmennünk a hibakezelőhöz és megjelenítenünk az üzenőmezőt.

A VBA "Hiba esetén" nem működik az Excelben

Néha, bármennyire is próbálkozunk, az On Error módszer nem működik. Korábban implementáltuk a Hiba esetén módszerrel kezeli a hibákat. De néha még akkor is hibát mutat, ha a Hiba esetén Folytassa tovább vagy On Error GoTo 0 A kódodban több ok is lehet, amit ki kell javítanod, de ezt nem fogom megmutatni neked.

A VBA alapvető oka a ' Hiba esetén Nem működik az Excelben az Excelben a "Break on All Errors" opció bekapcsolása.

Kövesse az alábbi lépéseket a megoldáshoz:

📌 Lépések

  • Először nyomja meg a Alt+F11 a billentyűzeten a VBA-szerkesztő megnyitásához.
  • Most kattintson a Eszközök> Beállítások.

  • Ezután kattintson a Általános fülön a Opciók párbeszédpanel.

  • Itt láthatod, " Megszakítás minden hiba esetén " már be van jelölve. Ez alapvetően megakadályozza a hibák kezelését.
  • Ennek megváltoztatásához válassza a " Megszakítás kezeletlen hibák esetén " és kattintson a OK .

Remélem, ez megoldja a VBA "Hiba esetén" nem működik az Excelben.

Bővebben: A NAME hiba okai és javításai az Excelben (10 példa)

💬 Emlékezetes dolgok

✎ Hiba esetén Folytassa tovább nem javítja ki a hibákat. Alapvetően figyelmen kívül hagyja a hibát, és a következő utasítással folytatja.

Az Excel csapdába ejti és tárolja a futásidejű hibákat az Err objektumban. Amikor a Hiba esetén Folytassa tovább utasítás, törli az Err objektum tulajdonságait.

Kikapcsolhatja a Hiba esetén Folytassa tovább utasítás az Excel VBA kódjában a következő utasítás hozzáadásával On Error GoTo 0 nyilatkozat.

Következtetés

Végezetül remélem, hogy ez a bemutató hasznos ismeretekkel látta el Önt a Hiba esetén Folytassa tovább az Excel VBA-ban. Javaslom, hogy tanulja meg és alkalmazza ezeket az utasításokat az adatállományára. Töltse le a gyakorlati munkafüzetet, és próbálja ki ezeket saját maga. Emellett bátran adjon visszajelzést a megjegyzés rovatban. Az értékes visszajelzései motiválnak minket, hogy ilyen oktatóanyagokat hozzunk létre.

Ne felejtse el megnézni weboldalunkat Exceldemy.com különböző Excelhez kapcsolódó problémák és megoldások.

Tanulj folyamatosan új módszereket és fejlődj!

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.