VBA On Error Goto 0 - Hogyan lehet használni a GoTo 0 hibát az Excel VBA-ban?

Tartalomjegyzék

Excel VBA On Error Goto 0

A VBA On Error A GoTo 0 hibakezelő utasítás az engedélyezett hibakezelő letiltására az eljárás során. „Hibakezelő letiltóként” emlegetik.

A hibakezelés bármelyik programozási nyelven egy mesterkurzus, amelyet az összes kódolónak meg kell értenie. VBA programozási nyelv is, és hibakezelési technikáink is vannak ebben a programozási nyelvben. Az „On Error Resume Next” engedélyezi a hibakezelőt, az „On Error GoTo 0” pedig letiltja az engedélyezett hibakezelőt.

Az „On Error Resume Next” és az „On Error GoTo 0” egyaránt olyan párok, amelyeket párhuzamosan kell használni a kód hatékonysága érdekében. A hiba kezeléséhez a „On Error Resume Next” utasítással kell kezdenünk, és le kell állítanunk ezt a hibakezelőt. A „On Error GoTo 0” állítást kell használnunk.

Az ezen állítások közé írt bármely vonalkód figyelmen kívül hagyja az eljárás során fellépő hibákat.

Hogyan használható az On Error GoTo 0 utasítás?

Nézze meg például az alábbi kódot.

Kód:

Sub On_ErrorExample1 () munkalapok ("Sheet1"). Válassza ki a tartományt ("A1"). Érték = 100 munkalap ("Sheet2"). Válassza ki a tartományt ("A1"). Érték = 100 End Sub

A fenti kód az, hogy először kiválasztja a „Sheet1” nevű munkalapot, és az A1 cellába beilleszti a 100 értéket.

Kód:

Munkalapok ("Sheet1"). Válassza ki a Range ("A1") értéket. Érték = 100

Ezután kiválasztja a „Sheet2” nevű munkalapot, és beilleszti ugyanazt az értéket.

Kód:

Munkalapok ("2. lap"). Válassza ki a Tartomány ("A1") értéket. Érték = 100

Most a munkafüzetemben vannak az alábbi lapok.

Nincsenek „Sheet1” és „Sheet2” nevű lapok. Amikor futtatjuk a kódot, az alábbihoz hasonló hibával találkozik.

Mivel nincs „Sheet1” névre keresztelt lap, „Alaptartományon kívüli” hibával találkozott. A hiba kezeléséhez hozzáadom a „On Error Resume Next” hibakezelő állítást a makró tetejére.

Kód:

Sub On_ErrorExample1 () On On Folytassa a következő munkalapokat ("Sheet1"). Válassza ki a tartományt ("A1"). Érték = 100 munkalap ("Sheet2"). Válassza ki a tartományt ("A1"). Érték = 100 End Sub

Most futtassa a kódot, és nézze meg, mi történik.

Nem fog hibaüzeneteket adni, mert a Hiba folytatása következő hibaelhárító utasítás engedélyezve van.

Képzelje el azt a forgatókönyvet, amikor figyelmen kívül kell hagynunk a hibát, ha a „Sheet1” munkalap nem áll rendelkezésre, de értesítenünk kell, ha nincs „Sheet2” munkalap.

Mivel a tetején felvettük az On Error Resume Next alkalmazást, elkezdte kezelni a hibát, ugyanakkor meg kell adnunk, hogy hány sort kell figyelmen kívül hagynunk a hibáról.

Ebben a példában csak figyelmen kívül kell hagynunk az első munkalap, de a második lap hibáját. A hibának akkor kell bekövetkeznie, ha nincs „Sheet2” munkalap. Tehát miután az első munkalap kód hozzáadta a hibát tiltó sort On Error GoTo 0.

Kód:

Sub On_ErrorExample1 () On On Folytassa a következő munkalapokat ("Sheet1"). Válassza ki a tartományt ("A1"). Érték = 100 On Error a GoTo 0 munkalapokon ("Sheet2"). Válassza ki a tartományt ("A1"). Érték = 100 End Sub

Most futtassa a kódot soronként, hogy lássa a hatást az F8 billentyű lenyomásával.

Most, ha megnyomja az F8 billentyűt, amikor a kód végrehajtása a következő sorra ugrik, az aktív soros feladat végrehajtásra kerül. Most az aktív sor (sárga színű vonal) „On Error Resume Next” hibakezelő, és a hibakezelő engedélyezve lesz.

Most bármilyen hiba lép fel. Mindaddig figyelmen kívül hagyja, amíg ki nem hajtja a hibakezelő letiltja az „ On Error GoTo 0 ” kódot .

Az előző kísérletben hibákkal találkoztunk, de még egyszer megnyomjuk az F8 billentyűt, és meglátjuk a varázslatot.

Anélkül, hogy bármilyen hibát adna, folytatta a kód végrehajtását, annak ellenére, hogy nincs kiválasztandó „Sheet2” munkalap. Most nyomja meg ismét az F8 billentyűt.

Mivel nem volt Sheet1, nem tudja beilleszteni az értéket az A1 cellába 500-ként, de amit csinál, az 500 értéket beilleszti az A1 cellába, attól függően, hogy melyik munkalap aktív. Aktív munkalapom a kód végrehajtásakor a „Sheet3” volt, ezért a 100 értéket beillesztjük az A1 cellába.

Most az aktív kódsor „ On Error GoTo 0 ” az F8 billentyű lenyomásával. Ez a soros feladat végrehajtásra kerül.

Mivel az „On Error GoTo 0” futtatásra került, leállította a hibakezelés folyamatát, és ismét előfordul, hogy hibákat mutat. Nyomja meg az F8 billentyűt és nézze meg a hibát.

Az előző esetben az On Error GoTo 0 nélkül ezt a hibát is figyelmen kívül hagyta, de mivel hozzáadtunk egy hibakezelő letiltót, a hiba újra elkezdődött.

Emlékezetes dolgok itt

  • Mind a On Error Resume Next, mind az On Error GoTo 0-t „ Error Handler Enabler ” és „ Error Handler Disabler ” néven kell használni .
  • A két utasítás közötti bármely kódsor hibát észlel, amelyet figyelmen kívül hagynak.
  • Ha van On Error GoTo 0 utasítás, akkor az alfolyamat kilépése után a hibakezelő letiltásra kerül.

érdekes cikkek...