VBA On Error Folytatás Next - Példák a hibaelhárításra vonatkozó VBA folytatására

Tartalomjegyzék:

Anonim

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:

  1. Szintaxishiba vagy elemzési hiba.
  2. Összeállítási vagy fordítási hiba.
  3. Futtatási hiba.
  4. 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 sablont

VBA 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 -

  1. Teljes útmutató a VBA makrókhoz
  2. VBA DateDiff (példák Excel sablonnal)
  3. Hogyan lehet használni a célkeresést a VBA-ban?
  4. VBA védőlap szintaxissal
  5. VBA Environ