Excel VBA hiba esetén folytatódik
A Hibakezelés nagyon hasznos és jelentős mechanizmus a nyelvek programozásához, mint például a VBA hibakezelés vagy megelőzés, amely a Hibakezelés egyik aspektusa, ami azt jelenti, hogy a VBA szkriptben hatékony és jelentős intézkedéseket kell hozni a hiba felbukkanó üzenet előfordulásának elkerülése érdekében. Az Excel VBA On Error Resume Next nyilatkozata figyelmen kívül hagyja a hibát okozó kódvonalat, és folytatja vagy végrehajtja a végrehajtást a hibát okozó sor követő következő sorra.
MEGJEGYZÉS: A Resume Next folyamán a következő utasítás nem javítja a futásidejű hibákat, ez egy hiba, amely figyelmen kívül hagyja, hogy a VB program futtatása mikor folytatódik a futásidejű hibát okozó sorból.Alapvetõen a Hiba folytatása bekapcsoláskor a következõ akkor használatos, ha figyelmen kívül hagyja a hibát, és folytathatja vagy folytathatja a kód végrehajtását a következõ cellába.
A VBA hibatípusai
Az alábbiakban bemutatjuk a különböző típusú hibákat a VBA-ban:
- Szintaxishiba vagy elemzési hiba.
- Összeállítási vagy fordítási hiba.
- Futtatási hiba.
- Logikai hiba.
A fenti hibák kijavításra kerülnek a kódban található hibakeresési és 'On Error' nyilatkozatok segítségével. A futásidejű hiba elkerülhető az On Error Resume Next gomb segítségével.
VBA futásidejű hiba:
A On Resume Next elemének magyarázata előtt tisztában kell lennie a futásidejű hibával, amikor lehetetlen matematikai utasítások vagy kifejezések jelennek meg egy utasításban, akkor ez a futásidejű hiba jelentkezik.
Példák az Excel VBA On Error-ra folytatódik
Az alábbiakban bemutatjuk az On Viselet folytatása következő példáját az Excel VBA-ban:
Töltse le ezt a VBA On Error-val folytatódó következő Excel sablon itt - VBA On Error-val folytathatja a következő Excel sablontVBA On Error Folytatás folytatása Következő - 1. példa
Ebben az esetben a hibát figyelmen kívül hagyják, és a kód végrehajtása tovább halad. Az alábbiakban említett példában a 6 nem osztható nullával, ha úgy futtatja, hogy nem adja meg a Hiba folytatása következő utasítás bejegyzését, akkor az alább említett futásidejű hiba jelentkezik.
Kód:
Sub RUNTIME_1 () MsgBox 6/0 End Sub
Ha a SUB utasítás után a kód tetején megadott On Error Resume Next bejegyzésnél figyelmen kívül hagyja a futásidejű hibát, és továbbmegy a következő utasításra, 6/2 kimenetet eredményez (felbukkanó üzenet mező ennek eredményével).
Kód:
Sub RUNTIME_2 () On Error Folytatás Következő MsgBox 6/0 MsgBox 6/2 End Sub
VBA On Error Folytatás folytatása Következő - 2. példa
Az On Resume Next lehetőséget a következő helyen használhatom a kód bárhol, az elejétől a végéig. Az alább említett példában 3 számítást kell végeznem, azaz
9/3 =?
9/0 =?
9/2 =?
A fent említett példában megfigyelheti egy második számítást, ahol egyetlen szám sem osztható nullával, azaz a második lépésben a 9 nem osztható nullával. Tegyük fel, hogy ha a makrót úgy futtatja, hogy nem írja be az On Error Resume Next utasítást, akkor most lépésről lépésre végrehajthatom a kódot a step into vagy az F8 billentyű segítségével, hogy megértse, hogyan működik.
Most futtatom a fenti kódot, gyakran lépésről lépésre kattintva az Into opcióra vagy az F8 gombra. Csak átmásolom a fenti kódot, és lépésről lépésre elkezdem futtatni, mert a számítás első lépésekor megjelenik a 3. üzenet.
Kód:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Amikor futtatom a második kódsorot, akkor az alább említett futásidejű hiba a kód második lépésekor fordul elő, ahol egyetlen szám sem osztható nullával, azaz a második nem osztható 9-gyel.
Kód:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Ha még rákattintom a hibakeresésre, akkor nem folytathatom tovább, ahol a kód második sorához vezet (sárga színű lesz), ahol meg kell javítanom. Tehát itt, ha tovább kattintunk a lépésbe lépés opcióra vagy az F8 gombra, akkor a kód harmadik számítása nem kerül végrehajtásra.
A futásidejű hiba kijavításához vagy kezeléséhez az OnError Resume Next nyilatkozatát egy második kód fölött vagy a kód elején az alállomás alatt kell végrehajtanom vagy végrehajtanom. úgy, hogy átugorja a kódot, és továbblép a kód harmadik lépésére, és kiszámítja az értéket.
Kód:
Sub RUNTIME_30 () MsgBox 9/3 On Hiba Folytatás Következő MsgBox 9/0 MsgBox 9/2 End Sub
VAGY
Sub RUNTIME_31 () On Error Resume Next MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Most hozzáadtam a hibaüzenet folytatásához a következő nyilatkozatot a kódhoz, ahol a fenti kódok bármelyikét használhatja, ha lépésről lépésre futtatja, akkor egy két üzenetű felugró ablak lesz, az egyik a kimeneti első kód és a harmadik kód számítás. On Error Resume (Folytatás) On Next (Folytatás) A Next figyelmen kívül hagyja a második kód futási hibáját, és továbbmegy a harmadik kódhoz.
VBA On Error Folytatás folytatása Következő - 2. példa
Most látni fogjuk az On Error Resume kombinációjának legközelebbi és a GoTo 0 hibát. Az alábbi kódban figyelmen kívül hagyja a hibákat, amíg el nem éri a On Error GoTo 0 utasítást. A On Hiba GoTo 0 utasítás után a kód visszatér vagy visszatér a normál hibaellenőrzéshez, és kiváltja a várható hibát.
Kód:
Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Követés "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub
A fenti kód futtatásakor megmutatja a megosztási hibát, azaz a típus eltérése (numerikus érték nem osztható szövegesen).
Most elmentheti a munkafüzetét „Excel makrokompatibilis munkafüzetként”. A Munkalap bal oldali sarkában található Mentés gombra kattintással.
Amikor újra megnyitja ezt az excel fájlt, használhatja az alább említett gyorsbillentyűt, azaz
A Function + Alt + F11 gyorsbillentyűk segítenek a munkafüzet összes létrehozott makró-kódjának elérésében. A Function + Alt + F8 gyorsbillentyűk segítenek megnyitni a „Makró” párbeszédpanel ablakot, amely tartalmazza az összes makrónevet, ahol egy kiválasztott makrokódot futtathat.
Dolgok, amikre emlékezni kell
- A futási hiba csendesen becsapódik, és a globális Err objektumban tárolódik
- On Error Resume A következők általában megakadályozzák a kódfuttatás megszakítását.
- A hibaobjektum tulajdonságai (Err Object) automatikusan törlődnek, ha a Resume Next funkciót használják hibakezelési rutinban
Ajánlott cikkek
Ez egy útmutató a VBA On Error Resume Next-hez. Itt a VBA Excel különféle hibatípusait tárgyaljuk, néhány gyakorlati példával és letölthető Excel sablonnal együtt. Megnézheti más javasolt cikkeinket -
- Teljes útmutató a VBA makrókhoz
- VBA DateDiff (példák Excel sablonnal)
- Hogyan lehet használni a célkeresést a VBA-ban?
- VBA védőlap szintaxissal
- VBA Environ