Excel VBA On Error Resume Next
A VBA On Error Resume Next egy hibakezelő utasítás. Ha a hiba a kód futtatása közben jelentkezik, ahelyett, hogy hibát mutatna, folytassa a következő kódsor folytatását a hibaüzenet figyelmen kívül hagyásával, használhatja ezt az utasítást.
Azok, akik rendszeresen írnak kódokat az excel VBA-ban, tudják, hogy a hozzáértő kódok megírása után is hibákat tapasztalhatnak, de ezt a hibát figyelmen kívül akarják hagyni, és a következő kódsorokkal tovább futnak. A hibaüzenetek megjelenésének egyik tipikus példája, amikor a VLOOKUP munkalapfüggvény nem találja meg a keresési értéket a tábla tömbből. Nem ad vissza # N / A hibát; inkább dobja a hibát. Mint „Nem sikerült megszerezni a munkalap függvényosztály VLOOKUP tulajdonságát.”
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__2.png.webp)
Ha nem tudja, miért kapjuk ezt a hibát, akkor nagyon nehéz kijavítani a hibát. A VBA-ban van egy " On Error Resume Next " nevű szolgáltatás .
Mit csinál a következő hibaüzenet a VBA-ban?
Vannak bizonyos területek kódolóként. Biztosan tudni fogjuk, hogy ez hibaüzenetet fog adni, de a kód folytatása érdekében figyelmen kívül kell hagynunk ezt a hibát, így a hiba elhanyagolása mindenki számára általános kétség.
A VBA On Error Resume Next utasítás használatával figyelmen kívül hagyhatjuk a hibát, és folytathatjuk a következő kódsort.
1. példa
Tegyük fel, hogy sok munkalapja van, és néhányat elrejt a VBA projekt részeként. Például az alábbiakban láthatók azok a munkalapok, amelyek a munkalapomban vannak.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__3.png.webp)
Írtam kódokat az „Értékesítés és„ Nyereség ”lapok elrejtésére, az alábbiakban pedig a kód található.
Kód:
Sub On_Error () munkalapok ("Értékesítés"). Visible = xlVeryHidden munkalapok ("Profit 2019"). Visible = xlVeryHidden munkalapok ("Profit"). Visible = xlVeryHidden End Sub
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__4.png.webp)
Most elkezdem a kódok futtatását soronként az F8 billentyű segítségével.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__5.png.webp)
Ha még egyszer megnyomom az F8 billentyűt, az elrejti az „ Értékesítés ” nevű lapot .
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__6.png.webp)
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__7.png.webp)
Most nyomja meg még egyszer az F8 billentyűt, és nézze meg, mi történik.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__8.png.webp)
„Alaptartomány a tartományon kívül” hibát kaptunk, mert a jelenlegi kódsor az alábbiakat mondja.
Munkalapok ("Profit 2019"). Visible = xlVeryHidden
A „ Profit 2019 ” nevű munkalapot próbálja elrejteni , de a „Profit 2019” nevű munkalap nincs.
Ezekben az esetekben, ha a munkalap nem létezik a munkafüzetben, figyelmen kívül kell hagynunk a hibát, és folytatnunk kell a kód futtatását az „Aláírási tartományon kívüli” hiba figyelmen kívül hagyásával.
A kód következő sora azt mondja
Munkalapok ("Profit"). Visible = xlVeryHidden
Ez a munkalap létezik ebben a munkafüzetben, így a hiba figyelmen kívül hagyása nélkül nem léphetünk erre a kódsorra.
A hiba figyelmen kívül hagyásához hozzá kell adnunk a „On Error Resume Next” utasítást.
Kód:
Sub On_Error () On Error A következő munkalapok folytatása ("Értékesítés"). Visible = xlVeryHidden munkalapok ("Profit 2019"). Visible = xlVeryHidden munkalapok ("Profit"). Visible = xlVeryHidden End Sub
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__9.png.webp)
Mint fent láthatja, a kód tetejére állítottam az állítást, mielőtt bármelyik sor elindulna. Most futtassa a kódot, és nézze meg, mi történik.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__10.png.webp)
Most abban a sorban vagyok, amelyik korábban hibát kapott, nyomja meg az F8 billentyűt, és nézze meg, mi történik.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__11.png.webp)
Ugrottam a következő kódsorra, anélkül, hogy hibát mutattam volna, a tetején található utasítás miatt, amely a „On Error Resume Next” VBA utasítás.
2. példa
Most meglátjuk, hogyan kell használni ezt az állítást még egy példával. Nézze meg a példa alábbi adatszerkezetét.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__12.png.webp)
Az első táblázat felett két olyan táblázat található, amelyekben a Emp táblázat neve és a fizetésük részletei szerepelnek a második táblázatban, és csak az Emp nevünk van, ezért a VLOOKUP használatával be kell szereznünk a bér részleteit a bal oldali táblázatból.
Az alábbiakban látható a kód, amelyet a részletek megszerzéséhez írtam.
Kód:
Sub On_Error1 () Dim k Meddig k = 2 - 8 celláig (k, 6). Érték = WorksheetFunction.VLookup (cellák (k, 5), tartomány ("A: B"), 2, 0) Következő k vége Alatti
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__13.png.webp)
Most futtassa a kódot soronként, és nézze meg, mi történik.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__14.png.webp)
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__15.png.webp)
Az első cellakód futtatásakor megkapjuk az eredményt az első alkalmazottra. Ismételje meg ugyanezt a második alkalmazottnál is.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__16.png.webp)
Ezúttal megkaptuk a hibaüzenetet. Nézzük meg a táblázat második alkalmazott nevét.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__17.png.webp)
A második alkalmazott neve „Gayathri”, de ez a név nem szerepel az első táblázatban, így a VBA VLOOKUP függvény nem ad vissza „# N / A” hibát, ha a VLOOKUP nem találja a keresési értéket a asztal; hanem a fenti hibaüzenetet adja.
Célunk az, hogy ha az alkalmazott neve nem található meg a táblázatban, akkor egy üres cellára van szükségünk az adott alkalmazott számára, és figyelmen kívül hagyjuk a hibát, és eredményt adunk a többi névnél.
Hozzá kell adnunk a ciklus belsejében az „On Error Resume Next” utasítást.
Kód:
Sub On_Error1 () Dim k Addig, amíg k = 2 - 8 On Hiba A következő cellák folytatása (k, 6). Érték = WorksheetFunction.VLookup (Cells (k, 5), Range ("A: B"), 2, 0 ) Következő k Vége Sub
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__18.png.webp)
Most futtassa a kódot, és nézze meg az eredményt.
![](https://cdn.know-base.net/8526096/how_to_ignore_errors_using_vba_on_error_resume_next_statement__19.png.webp)
Két alkalmazott neve, a „ Gayathri & Karanveer ”, nincs ott a listán, ezért ezeknek a vonalkódoknak hibát kellett észlelniük, mivel hozzáadtuk a „ On Error Resume Next ” hibakezelő nyilatkozatot, amely figyelmen kívül hagyta ezt a kódsort és folytatta a következő alkalmazottnak.
Emlékezetes dolgok itt
- A „On Error Resume Next” a hibakezelő utasítás, amikor figyelmen kívül kell hagynunk az ismert hibát.
- Ha csak egy adott kódkészletre kívánja figyelmen kívül hagyni a hibaüzenetet, zárja be a következő hibaüzenetet a „ On Error GoTo 0 ” utasítás hozzáadásával .