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

Innholdsfortegnelse

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 feilen, må vi starte med utsagnet "On Error Resume Next" og avslutte denne feilbehandleren. Vi må bruke påstanden “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?

Se for eksempel på 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 den 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 arkene nedenfor i arbeidsboken min.

Det er ingen ark som heter “Ark1” og “Ark2”. Når vi kjører koden, vil den støte på en feil som nedenfor.

Siden det ikke er noe ark som heter “Sheet1”, har det oppstått en “Subscript out of range” -feil. For å håndtere denne feilen, vil jeg legge til en feilbehandlingserklæ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 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. Vi trenger at feilen oppstår 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 hopper til neste linje, og den aktive linjeoppgaven 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. Det vil bli ignorert til den kjører feilbehandleren deaktiverer koden " On Error GoTo 0 " -uttrykk.

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 utførelsen 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 hva den gjør er at den vil sette inn verdien 500 til celle A1, uansett hvilken regneark som er aktiv. Det aktive arket mitt når jeg utfø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. Denne linjeoppgaven vil bli utført.

Siden “On Error GoTo 0” er utført, har den stoppet prosessen med feilhåndtering og igjen begynner å vise feil hvis noen oppstår. Trykk på F8-tasten og se feilen.

I forrige tilfelle uten On Error GoTo 0, har den også ignorert denne feilen, men siden vi har lagt til en feilbehandlingsdeaktiver, har den begynt å vise feilen igjen.

Ting å huske her

  • Både On Error Resume Next og On Error GoTo 0 må brukes som " Error Handler Enabler " og " Error Handler Disabler ."
  • Enhver linje med koder mellom disse to utsagnene støter på en feil den vil bli ignorert.
  • Hvis det er On Error GoTo 0-setning, vil feilbehandleren deaktiveres etter utgangen av underprosedyren.

Interessante artikler...