VBA On Error Goto 0 | Hvordan bruke feil GoTo 0 i Excel VBA?

Excel VBA ved feil Gå til 0

VBA On Error GoTo 0 er en feilbehandlingserklæring som brukes til å deaktivere den aktiverte feilbehandleren i prosedyren. Det er referert til som "Feilhåndteringsdeaktiver".

Feilhåndtering på et av programmeringsspråkene er en mesterklasse som alle koderne trenger å forstå. VBA programmeringsspråk også, og vi har også feilhåndteringsteknikker på dette programmeringsspråket. "On Error Resume Next" aktiverer feilbehandleren og "On Error GoTo 0" vil deaktivere den aktiverte feilbehandleren.

Både “On Error Resume Next” og “On Error GoTo 0” er par som må brukes sammen for effektiviteten av koden. For å håndtere feil, må vi starte med utsagnet "On Error Resume Next" og for å avslutte denne feilbehandleren, må vi bruke setningen "On Error GoTo 0".

Enhver linjekode skrevet mellom disse uttalelsene vil ignorere enhver form for feil som oppstod under saksbehandlingen.

Hvordan bruke On Error GoTo 0 Statement?

Du kan laste ned denne VBA On Error Goto 0 Excel-malen her - VBA On Error Goto 0 Excel Template

For et eksempel se koden nedenfor.

Kode:

 Sub On_ErrorExample1 () regneark ("Sheet1"). Velg område ("A1"). Verdi = 100 regneark ("Sheet2"). Velg Range ("A1"). Verdi = 100 End Sub 

Hva den ovennevnte koden gjør, er at den først velger regnearket med navnet “Ark1” og i celle A1 vil det sette inn verdien 100.

Kode:

Regneark ("Ark1"). Velg Område ("A1"). Verdi = 100

Deretter velger du regnearket med navnet “Sheet2” og setter inn samme verdi.

Kode:

Regneark ("Sheet2"). Velg Range ("A1"). Verdi = 100

Nå har jeg under ark i arbeidsboken min.

Det er ingen ark kalt “Sheet1” & “Sheet2”, når vi kjører koden, vil det oppstå en feil som nedenfor.

Siden det ikke er noe ark som heter "Ark1", har det oppstått "Abonnement utenfor rekkevidde" -feil. For å håndtere denne feilen vil jeg legge til en feilbehandlererklæring "On Error Resume Next" øverst i makroen.

Kode:

 Sub On_ErrorExample1 () Ved feil Gjenoppta neste regneark ("Sheet1"). Velg Range ("A1"). Verdi = 100 Worksheets ("Sheet2"). Velg Range ("A1"). Verdi = 100 End Sub 

Kjør nå koden og se hva som skjer.

Det gir ingen feilmeldinger fordi feilbehandlingserklæringen On Error Resume Next er aktivert.

Tenk deg scenariet der vi trenger å ignorere feilen hvis regnearket "Sheet1" ikke er tilgjengelig, men vi må varsle om det ikke er noe regneark som heter "Sheet2".

Siden vi har lagt til On Error Resume Next øverst, har det begynt å håndtere feilen, men samtidig må vi spesifisere for hvor mange linjer vi trenger for å ignorere denne feilen.

I dette eksemplet trenger vi bare å ignorere feilen for det første regnearket, men for det andre arket og utover trenger vi at feilen skal oppstå hvis det ikke er noe regneark "Sheet2". Så etter at den første regnearkkoden legger til feil deaktiver linjen On Error GoTo 0.

Kode:

 Sub On_ErrorExample1 () Ved feil Gjenoppta neste regneark ("Sheet1"). Velg Range ("A1"). Verdi = 100 On Error Gå til 0 regneark ("Sheet2"). Velg Range ("A1"). Verdi = 100 End Sub 

Kjør nå koden linje for linje for å se virkningen ved å trykke på F8-tasten.

Nå hvis du trykker på F8-tasten en gang kodeutførelse vil hoppe til neste linje og aktiv linjeoppgave vil bli utført. Nå er den aktive linjen (gulfarget linje) "On Error Resume Next" -feilbehandler, og feilbehandleren blir aktivert.

Nå oppstår det en feil, vil den bli ignorert til den utfører feilbehandleren deaktiverer koden " On Error GoTo 0 ".

I forrige forsøk har vi fått feil, men trykk på F8-tasten en gang til og se magien.

Uten å gi noen form for feil, har den gjenopptatt kjøringen av koden, selv om det ikke er regneark "Sheet2" å velge. Trykk nå på F8 igjen.

Siden det ikke var noe ark1, kan det ikke sette inn verdien i A1-cellen som 500, men det den gjør er at den vil sette inn verdien 500 til celle A1, uansett hvilket regneark som er aktivt. Det aktive arket mitt når jeg kjører koden var “Sheet3”, så verdien 100 blir satt inn i cellen A1.

Nå er den aktive kodelinjen " On Error GoTo 0 ", ved å trykke på F8-tasten vil denne linjeoppgaven utføres.

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.