VBA ved feil GoTo - Typer av feilmeldinger i VBA

Innholdsfortegnelse

Excel VBA ved feil GoTo

Feil er en del av et hvilket som helst kodingspråk, og VBA-makroer er ikke forskjellige fra dette. Etter min mening er å finne hvorfor feilen oppstår 90% av jobben, og 10% ligger i hvordan du løser den feilen. I hvert kodningsspråk bruker kodere sin egen måte å håndtere feil på i kodingen, så bruker vi også i VBA-koding. Ofte må vi ignorere feilen, eller ofte vil vi kanskje gå til bestemte ting når feilen oppstår. "On Error" er utsagnet vi trenger å bruke i VBA for å håndtere feil.

Denne uttalelsen har tre typer utsagn, og nedenfor er listen.

  1. Ved feil Gå til 0
  2. On Error Goto (label)
  3. Ved feil Gjenoppta neste

I denne artikkelen vil vi se hvordan disse tre utsagnene brukes i VBA-koding for å håndtere alle slags feil.

Hvordan bruke VBA på feilmeldinger?

# 1 - Ved feil Gjenoppta neste

Som uttalelsen selv sier, betyr "On Error Resume Next" når feilen oppstår i koden "gjenoppta" neste linje i koden ved å ignorere feillinjekoden. Ta en titt på koden nedenfor.

I koden nedenfor har jeg nevnt regnearknavnene og bedt om å oppgi verdien i den første cellen som "Feiltesting".

Kode:

Sub On_Error_Resume_Next () Regneark ("Ws 1"). Velg område ("A1"). Verdi = "Feilprøving" regneark ("Ws 2"). Velg område ("A1"). Verdi = "Feiltest" regneark ( "Ws 3"). Velg Område ("A1"). Verdi = "Feil Testing" Arbeidsark ("Ws 4"). Velg Område ("A1"). Verdi = "Feil Testing" End Sub

Nå har jeg regnearkene nedenfor i arbeidsboken min.

  • Jeg vil kjøre koden og se hva som skjer.
  • Vi fikk feilen "Subscript Out of Range", klikk på "Feilsøk" for å se i hvilken linje vi fikk feilen.
  • Så i linjen "Arbeidsark (" Ws 3 ") .Velg" fikk vi en feil. Dette er fordi det i arbeidsboken vår ikke er noe regneark med navnet “Ws 3”, så det oppstod en feil.

I slike tilfeller vil vi kanskje ignorere feilen og fortsette kjøringen av koden til neste linje. Dette er hvor feilbehandleren “On Error Resume Next” kommer inn i bildet.

  • Alt vi trenger å gjøre er å legge til linjen "On Error Resume Next" ved starten av makroen.

Utfør nå denne koden, og den vil ikke vise noen feilmelding, fordi når koden støter på en feil, vil den ignorere feilen og fortsette til neste kodelinje.

# 2 - Ved feil GoTo 0

Dette er ikke en feilbehandler, men en feilmeldingsaktivator etter at vi har deaktivert feilmeldingen ved å bruke uttalelsen "On Error Resume Next".

En du bruker “Fortsett neste” -utsagnet, begynner VBA-makroer å ignorere enhver form for feil som oppstår, og fortsetter med neste linje med koder. Men vi vil ikke at dette skal skje hele tiden fordi noen feil må vi ignorere med vilje andre trenger vi en melding.

Hvis et spesifikt sett med kode kaster en feil i den kodeblokken, er det bare vi som trenger å ignorere feil i andre deler av koden. Vi vil ikke ignorere feilen.

  • Se på bildet nedenfor for bruk av uttalelsen “On Error GoTo 0”.

Så nå vil feil bli ignorert til koden finner feilen, varsle aktivatoren "On Error GoTo 0" når denne kodelinjen kjører makroer tilbake til det normale og begynner å kaste feilmeldinger som vanlig.

# 3 - På feil GoTo-etikett

Vi har sett hvordan vi kan ignorere feilen, og hvordan du aktiverer feilmeldingen. Nå bruker vi denne metoden, kan vi gå til en bestemt kodelinje.

I denne metoden betyr "Etikett" at vi kan gi hvilket som helst navn til denne etiketten, og den samme etiketten skal også gis med den nødvendige kodelinjen.

Se for eksempel på den samme koden fra eksemplet ovenfor.

La oss nå utføre koden linje for linje ved å trykke på F8-funksjonstasten.

Nå vil makro lese feilbehandlingsuttalelsen; trykk på F8-tasten og utfør de første to regnearkkodene.

Nå er makro i ferd med å utføre den tredje regnearkkoden, som ikke er der i arbeidsboken, trykk på F8-tasten og se hva som skjer.

Fordi makro oppdaget en feil i kodelinjen nedenfor, har den hoppet til feilbehandlingsetiketten "ErrorMessage", som ble beskrevet gjennom uttalelsen "On Error GoTo (Label)".

Nå vil meldingsboksen vise meldingen som "Feil oppstod og avslutte makroen."

Ting å huske

  • Vba On Error GoTo 0 vil aktivere feilmeldingen igjen, så ikke glem å legge til dette etter å ha levert en feilbehandler.
  • Du må være helt sikker på i hvilken del av koden du vil ignorere feilen, så legg bare feilbehandleren for den kodeblokken.

Interessante artikler...