VBA hibás
A VBA On Error egy egyszerű módszer a váratlan kivételek kezelésére az Excel Macros programban. Ismert, hogy hiba nélkül nem tudunk kódot írni. A nagy kód írása néha hibát is okozhat nekünk, még a fordításkor is. Az ilyen helyzet elkerülése érdekében hozzáadunk egy Hibaüzenetet, amely a helyes válasz vagy hibakód megadása helyett hibakóddal jeleníti meg az üzenetet. Úgy tűnik, hogy megvan a számításunk kimenete, de a hibakód nyomtatódik ki.
Hogyan lehet használni az Excel VBA-t hibajelentésen az Excelben?
A VBA-ban háromféle hiba létezik. Nézzünk meg különféle példákat néhány példával.
1. példa
Az első hibatípus a Kód-fordítási hiba, amely akkor jelentkezik, ha a kódot be nem jelentették vagy lehetetlen változók. A további megértéshez az osztás egyszerű matematikai kifejezését fogjuk használni. Ehhez lépjen a VBA Beszúrás menüjébe, és válassza az alább látható módon a Modul elemet.
Most nyissa meg az alkategóriát, és adjon hozzá bármilyen nevet. Ahogy On Error- t használunk, így neveztük ugyanaznak.
Sub OnError () Vége Sub
Most definiáljon 2 vagy 3 egész számot. Itt X-et és Y-t veszünk egész számként.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám vége Sub
Most, ahogy fentebb tárgyaltuk, kiszámítjuk az osztási matematikai kifejezést. X esetén egy karaktert fogunk a Számlálóba elosztani és osztani 0-val. És Y lesz 20/2, ami teljes szám.
Sub OnError () Dim X egész szám, Y egész szám X = Teszt / 0 Y = 20/2 End Sub
Most futtassa a kódot az F5 billentyű használatával vagy a lejátszás gombra kattintva, az alább látható módon. A 6. futási idő hibát kapjuk, amely a Szöveg többszörös hibát jelzi.
Most, hogy felülbíráljuk ezt a hibát, hozzáadunk egy sort On Error Resume Next, mielőtt a matematikai kódot megírnánk. Átugorja a hibakódot, de a második matematikai kód eredményét nem látjuk. Ez csak akkor rejti el a hibaüzenetet, ha különféle kódsorok vannak, az alábbiak szerint. Most próbálja meg futtatni a kódot is.
Sub OnError () Dim X egész szám, Y egész szám hiba esetén folytatás Következő X = Teszt / 0 Y = 20/2 MsgBox X MsgBox Y Vége Sub
Most, hogy felülbíráljuk ezt a hibát, hozzáadunk egy sort On Error Resume Next, mielőtt a matematikai kódot megírnánk. Átugorja a hibakódot, de a második matematikai kód eredményét nem látjuk. Ez csak akkor rejti el a hibaüzenetet, ha különféle kódsorok vannak, az alábbiak szerint. Most próbálja meg futtatni a kódot is.
2. példa
Ebben a példában azt a matematikai osztást vesszük figyelembe, amely végtelen eredményt ad, de kódolás esetén # DIV / 0 eredményt fog eredményezni. Ennek igazolására egy további Z egész számot veszünk figyelembe, X-vel és Y-vel együtt az alkategóriában, az alább látható módon.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám vége Sub
Most vázolja az összes X, Y és Z egész számot az osztás matematikai kifejezésével, és kinyomtatásához használja az MsgBox függvényt az egyes egész eredmények VBA-jában.
Az alábbiakban az X egész számra osztottuk a 10-t 0-ra, 20-ra 2-re és 30-at 4-re.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub
Most futtassa a kódot F5 billentyűvel vagy manuálisan, az alább látható módon.
Amint a fenti képernyőképen láthatjuk, a 11. futási idő hiba, ami azt jelenti, hogy a hiba a számhoz kapcsolódik. Most ennek kiküszöböléséhez adjon hozzá egy sort On Error Resume Next, a matematikai kifejezés előtt, az alábbiak szerint.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám hiba esetén folytatás X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub
Ha most futtatjuk a kódot, akkor az első X egész számra nullát kapunk, az Y és a Z értékre pedig az alábbiak szerint kapjuk meg az osztási válaszokat.
3. példa
A második típusú hiba akkor jelenik meg, ha helytelen adatbevitelt írunk be a kódba. Ehhez 3 X, Y és Z egész számot veszünk figyelembe az alkategória megnyitásával a VBA-ban, az alább látható módon.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám vége Sub
Most vegye figyelembe azt a matematikai osztást is, amelyet a fenti példában láthattunk.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub
Ha futtatjuk a kódot, akkor ugyanazt a hibaüzenetet kapunk, mint a 11. futási idő hiba.
Most, hogy felülbírálja ezt a hibát, használja a Hiba GoTo szöveget az „Eredmény : átugorhatja a hibaüzenetet, és kapja meg az alábbiak szerint jól működő kimenetet ” szöveggel.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám hiba esetén GoTo ZResult: X = 10/0 Y = 20/2 ZEredmény: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub
Most futtassa újra a kódot. Ugyanazt az eredményt kapjuk, mint az előző példában.
Hiba esetén a GoTo ZResult segít nekünk az említett eredménypont egész számának közvetlen átugrásában, ahogyan a Z egész számban tettük.
4. példa
A harmadik típusú hiba esetén, amikor futtatjuk a kódot, és a VBA nem képes megérteni a kód sorát. Ezt a On On Resume Next (Kód folytatása) kóddal, az MsgBox Err.Number számmal együtt is megteheti . Vegyük figyelembe a fenti példákban használt adatokat. Meg fogjuk látni ugyanazt a 3 egész X, Y és Z egész számot, amint az alább látható.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám vége Sub
És az eredménykimenet kinyomtatásához engedélyezze az összes egész üzenet mezőit kimenetként.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub
Most, ha futtatjuk a teljes kódot, akkor egy matematikai hibaüzenetet kapunk, amely a futási idő 11. hibája.
Most, hogy felülbíráljuk ezt a hibát, az On Error Resume Next lehetőséget fogjuk használni.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám hiba esetén folytatás X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub
És futtassa a kódot. Ez érvényes eredményt ad az érvényes matematikai soron, az alább látható módon.
Most adjunk hozzá még egy ZResult kód sort a Z egész számmegosztási matematikai kifejezés elõtt, és adjuk hozzá az MsgBox Err.Number kód sort a kód végéhez, az alább látható módon.
Sub OnError () Dim X egész szám, Y egész szám, Z egész szám hiba esetén folytatás X = 10/0 Y = 20/2 ZEredmény: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub
Most futtassa a kódot az F5 billentyűvel vagy a lejátszás gomb megnyomásával, az alább látható módon.
Mint láthatjuk a fenti képernyőképeket. Az első üzenet mezőben 0 van, amely felülírja a helytelen matematikai kifejezést. A második és a harmadik oszlop eredménye Y és Z egész szám. És az utolsó üzenet mezőben futott 11-es hibakód, amely valószínűleg az X egész szám osztási kifejezéseinek hibakódja.
Előnyei a VBA On Error
- Bármely matematikai képletet kiszámolhatunk, még akkor is, ha helytelen.
- Nagyobb kódolási struktúrák esetén, ahol van esély vagy hiba, ezeknek a módszereknek a felhasználása a kódsorok között is eredményes lehet.
- Ez jobb eredményt ad, mint a normál excel számítások eredménye.
Dolgok, amikre emlékezni kell
- A fájlt mindig a Macro-Enabled Excel fájlba mentse, hogy a létrehozott VBA kódot sokszor és többször is felhasználhassuk.
- Az excel követelmények bevezetése előtt mindig fordítsa le az írásbeli kódot.
- Ha szükséges, rendelje hozzá az írott kódot bármelyik gombhoz, hogy gyorsan rákattinthassunk és futtassuk a kódot.
Itt töltheti le a VBA On Error Excel sablont - VBA On Error Excel sablon
Ajánlott cikkek
Ez egy útmutató az Excel VBA On Error-hoz. Itt megvitattuk, hogyan lehet használni a VBA Hibanyilatkozatot, néhány gyakorlati példával és letölthető Excel sablonnal együtt. Megnézheti más javasolt cikkeinket is -
- Hogyan kell használni a VBA TRIM funkciót?
- Számformátum a VBA-ban
- Útmutató az Excel VBA-hez
- Hogyan kell használni a VBA Find Function funkciót?