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

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. A 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 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 hibák kezeléséhez a „On Error Resume Next” állítással kell kezdenünk, és ennek a hibakezelőnek a befejezéséhez az „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?

Itt töltheti le ezt a VBA On Error Goto 0 Excel sablont - VBA On Error Goto 0 Excel sablont

Például nézze meg 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 az alábbi lapok vannak a munkafüzetemben.

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

Mivel nincs „Sheet1” névre keresztelt lap, az „Alsó index tartományon kívül” hibával találkozott. A hiba kezeléséhez hozzáadok egy hibakezelő állítást: „On Error Resume Next” a makró tetején.

Kód:

 Sub On_ErrorExample1 () On On Hiba A következő munkalapok ("Sheet1") folytatása. 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 sorban kell figyelmen kívül hagynunk ezt a hibát.

Ebben a példában csak figyelmen kívül kell hagynunk az első munkalap hibáját, de a második munkalapnál tovább kell fordulnunk a hibához, 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 Error 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 az F8 billentyű lenyomásával láthassa a hatást.

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

Now any error occurs it will be ignored until it executes the error handler disables code “On Error GoTo 0” statement.

In the previous attempt, we have encountered errors but press the F8 key one more time and see the magic.

Without giving any kind of error it has resumed execution of the code even though there is not worksheet “Sheet2” to select. Now press F8 again.

Since there was no Sheet1 it cannot insert the value in the A1 cell as 500 but what it does is it will insert the value of 500 to cell A1 whichever worksheet is active. My active sheet when I am executing the code was “Sheet3”, so the value of 100 is inserted to the cell A1.

Now the active line of code is “On Error GoTo 0”, by pressing the F8 key this line task will be executed.

Since “On Error GoTo 0” is executed it has stopped the process of error handling and again starts to show errors if any occurs. Press the F8 key and see the error.

In the previous case without On Error GoTo 0, it has ignored this error as well, but since we have added error handler disabler it has started to show the error again.

Things to Remember here

  • Both On Error Resume Next and On Error GoTo 0 needs to be used as “Error Handler Enabler” and “Error Handler Disabler”.
  • Any line of codes between these two statements encounters an error it will be ignored.
  • If there is On Error GoTo 0 statement then after the exit of the subprocedure error handler will be disabled.