VBA a hibamegállapításokról A három legfontosabb módszer a hibák kezelésére

Excel VBA On Error Statement

A VBA On Error utasítás egyfajta hibakezelési mechanizmus, amelyet arra használnak, hogy a kódot tegye meg, mi történik, ha bármilyen típusú hibával találkozik, általában amikor egy kód hibával találkozik, a végrehajtás leáll, de ezzel a kijelentéssel a kódban végrehajtja a a kód folytatódik, ahogyan utasításokkal rendelkezik, amikor hibába ütközik.

A kód hibájának előrejelzése profivá teszi Önt a VBA kódolásban. Nem lehet 100% -osan hatékony a kód. Még ha abban is biztos vagy benne a kódod, ez hibát okozhat.

Szinte lehetetlen feladat mindenféle hibát azonosítani és kezelni, de a VBA hibáinak kezelésére különböző módjaink vannak. A kód írása közben nem számíthat arra, hogy a hibakód milyen típusú lehet, de ha bármilyen hiba jelentkezik, akkor több időt fordít a hibakeresésre, mint maga a kód megírása.

Mi a hiba?

A hiba nem más, mint egy kódsor, a funkcionalitás vagy a rossz kód miatt nem hajtható végre. Ezért próbáld meg előre látni a hibát és kezelni.

Például, ha megpróbálja törölni a hiányzó lapot, akkor nyilvánvalóan nem tudjuk végrehajtani azt a kódsort.

A hiba három típusból áll, az egyik fordítási hiba a be nem jelentett változók miatt. A második az adatbeviteli hiba a kódoló hibás bejegyzései miatt, a harmadik pedig a VBA miatt futási idő hiba nem ismeri fel a kódsort. Munkafüzethez vagy munkafüzethez való hozzáférés vagy azon való munka megkísérléséhez, amely nincs meg.

De van egy nyilatkozatunk a VBA-ban az ilyen típusú hibák kezelésére, azaz „On Error” utasítás.

A bekapcsolt hibakivonatok típusai

A VBA hibáinak kezelésének legfontosabb pontja az „On Error” utasítás. Például a Hiba esetén „folytassa a következő sort”, „lépjen vagy ugorjon egy másik sorra” stb.…

Az On Error utasításnak háromféle állítása van.

  1. A GoTo 0 azt jelenti, hogy amikor futási hiba lép fel, az excelnek vagy a VBA-nak meg kell jelenítenie a hibaüzenet mezőt, mondván, hogy milyen hiba történt. Amint a VBA végrehajtja a kódot, letiltja az összes hibakezelőt a kód adott blokkjában.
  2. A következő folytatás azt jelenti, hogy amikor a hiba bekövetkezik, ez az utasítás arra utasítja az excelt, hogy figyelmen kívül hagyja a hibát, és hibaüzenetek megjelenítése nélkül lépjen a következő kódsorra (folytassa a következőt). Ez nem azt jelenti, hogy kijavítja a hibát; inkább csak figyelmen kívül hagyja a hibát.
  3. A GoTo (címke) azt jelenti, hogy amikor a VBA hibával találkozik, lépjen a hozzárendelt címkéhez. Ez arra készteti a kódot, hogy a kódoló által megadott konkrét sorra ugorjon.

A VBA hibáinak kezelésének három legjobb módja

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

Tegyük fel, hogy elosztja 20 értékét 0-val, és deklarálta a változót, hogy hozzárendelje az osztás eredményét.

Kód:

Sub OnError_Example1 () Dim i egész számként i = 20/0 End Sub

Ha futtatja ezt a kódot, az az alábbi hibát dobja el.

Tehát egyetlen számot sem oszthat el nullával. A futási hiba száma 11, azaz osztás nullával.

Most még egy sort hozzáadok a kódhoz.

Kód:

Sub OnError_Példa1 () Dim i egész szám, j As egész szám i = 20/0 j = 20/2 End Sub

Most hozzáadom a következőt: A hiba folytatása a következő a tetején.

Kód:

Sub OnError_Example1 () Dim i egész szám, j egész szám On On hiba folytatás Következő i = 20/0 j = 20/2 End Sub

Most, ha végrehajtom ezt a kódot, nem kap hibaüzenetet; inkább a következő kódsorot hajtja végre, azaz j = 20/2.

# 2 - On GoTo Label

Három változót deklaráltam.

Kód:

Sub OnError_Example1 () Dim i mint egész, j mint egész, k mint egész

Mindhárom változóhoz hozzárendelek egy osztásszámítást.

Kód:

Sub OnError_Példa1 () Dim i egész szám, j egész szám, k As egész szám i = 20/0 j = 20/2 k = 10/5

Mindhárom számítás eredménye megjelenik az üzenet mezőben.

Kód:

Sub OnError_Example1 () Dim i egész szám, j egész szám, k As egész szám i = 20/0 j = 20/2 k = 10/5 MsgBox "i értéke" & i & vbNewLine & "j értéke "& j & _ vbNewLine &" k értéke "& k & vbNewLine End Sub

Most megpróbálom végrehajtani ezt a kódot, mivel az „I” számítása nem megfelelő. 11. futási hibát kapunk.

Most hozzáadom a „On Error Resume Next” utasítást.

Kód:

Sub OnError_Example1 () Dim i egész szám, j egész szám, k egész szám On On hiba folytatás Következő i = 20/0 j = 20/2 k = 10/5 MsgBox "Az i értéke" & i & vbNewLine & "The j értéke "& j & _ vbNewLine &" k értéke "& k & vbNewLine End Sub

Ha ezt végrehajtom, akkor kihagyja az „I” számítást, és a maradék két számítást végrehajtja, és az eredmény a következő.

Most a „On Error Resume Next” helyett hozzáadom az „On Error GoTo KCalculation” -t.

Kód:

Sub OnError_Example1 () Dim i egész szám, j egész szám, k egész szám On On hiba GoTo KCalculation: i = 20/0 j = 20/2 KCalculation: k = 10/5 MsgBox "i értéke" & i & vbNewLine & "J értéke" & j & _ vbNewLine & "k értéke" & k & vbNewLine End Sub
Megjegyzés: Itt a „KCalculation” az általam megadott címke neve; szóköz nélkül megadhatja saját címke nevét.

Most, ha végrehajtom ezt a kódsort, az nem ugrik a következő sorra. Inkább az általam megadott címke nevére ugrik, azaz „KCalcualtion”. Itt figyelmen kívül hagyja az „I” által adott hibát, és nem hajtja végre a „j” számítást, hanem azonnal a „KCalcualtion” -ra ugrik.

# 3 - Nyomtatási hibaszám a VBA-ban

A kód végén a hiba számát külön üzenetmezőbe is kinyomtathatjuk. A következő kódsor fogja elvégezni ezt a munkát.

Kód:

Tévedés

Most futtatom ezt a kódot. Az első üzenetmező megmutatja a számítási eredményeket.

Kattintson az OK gombra. Egy további üzenetdoboz jelenik meg a hiba számának megjelenítéséhez.

11-re megyünk; ennek eredményeként, azaz Nullával osztva.

A szám helyett megkaphatjuk a hibaleírást is. Csak meg kell változtatnunk a kódot. Az alábbiakban található a kód.

Kód:

Tévedés. Leírás

Ilyen leírást mutat.

Dolgok, amikre emlékezni kell

  • Miután a kód végén beírta az „On Error Resume Next” szót, ne felejtse el hozzáadni az „On Error GoTo 0” állítást.
  • A címke nevének mindkét helyen azonosnak kell lennie.
  • A címkék nevét nem kell előre meghatározni.
  • Végül mindig nézze meg, mi történt a különálló üzenetmezőben.

érdekes cikkek...