Excel VBA-feilhåndtering

Feilhåndtering er en veldig nyttig og betydelig mekanisme for programmeringsspråk som VBA. Feilkontroll eller forebygging er et aspekt av Feilhåndtering, som betyr å ta effektive og betydningsfulle tiltak i et VBA-skript for å unngå forekomst av feilmelding

Ulike typer feil i VBA

  1. Syntaksfeil eller parsingfeil
  2. Kompilering eller kompilasjonsfeil
  3. Kjøringsfeil
  4. Logisk feil

Ovennevnte feil kan utbedres ved hjelp av nedenfor nevnte feilsøking og forskjellige "On Error" -erklæringer satt inn mellom en kode.

Ved feil Fortsett neste

Feil Goto 0

Feil på vei

På feil går -1

VBA Feilhåndtering ved hjelp av forskjellige "PÅ FEIL" -erklæringer

Du kan laste ned denne VBA-feilhåndtering av Excel-mal her - VBA-feilhåndtering av Excel-mal

Eksempel 1 - VBA-kompilasjonsfeil

Når det er en feil i en uttalelse eller syntaks for VBA-kode, når du feil skriver inn en kode ved en feiltakelse, vil den bli uthevet i rød farge avhengig av innstillingsalternativene i verktøyene (Hvis du har valgt Auto syntaks sjekk).

En popup-meldingsboks med kompilasjonsfeil vises når du kjører koden med feil syntaks.

Kode:

 Sub SYNTAX_ERROR () MsgBox dette er mitt første program End Sub 

“SAMMENSETT FEIL: VARIABLE NOT DEFINED” er den vanligste feilen som vises som en popup-melding. når referansevariabelen ikke er definert, oppstår denne feilen.

Kode:

 Sub VBA_FORMAT1 () A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

I eksemplet over har jeg ikke erklært variabeltypen som streng derfor oppstår denne feilen. Så jeg trenger å erklære en variabel som Dim A som streng.

Kode:

 Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

Eksempel 2 - VBA kjøretidsfeil

Når det er umulig matematiske utsagn eller begrep i en uttalelse, oppstår denne runtime-feilen.

Kode:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Eksempel 3 - VBA-logiske feil eller feil

Disse feilene er veldig vanskelige å spore, verken vil bli uthevet eller det vises en popup-feilmelding. det vil resultere i uventede handlinger og uriktige resultater.

Eksempel: Når to variabler er til stede i kode, kan det inneholde en feil. I dette tilfellet oppstår logisk feil.

Hvordan forhindre feil i VBA?

La oss sjekke ut hvordan du kan forhindre ovennevnte forskjellige typer feil i VBA Excel.

Trinn 1: Å åpne et VB Editor-vindu Velg eller klikk på Visual Basic i kodegruppen på fanen Utvikler, eller du kan direkte klikke på snarveistasten Alt + F11 .

Trinn 2: For å opprette en tom modul, høyreklikk på arket 1 (VB_ERROR HANDLING) og sett inn modulen under Microsoft Excel-objekter og sett inn modulen slik at en ny tom modul blir opprettet.

VBA-feilhåndtering med feilsøkingsalternativ

Det er bedre å sette sammen kode før vi kjører den. For å følge samlingen må trinnene nedenfor følges. Under VB-menyverktøylinjen, under feilsøkingsalternativet, må vi velge et kompilert VBA-prosjekt. Når du klikker på den, sjekker den koden trinn for trinn, når den først finner feilen, vil den markere den og popup-meldingen vises, og dermed må du rette den. Når den er rettet, må du sammenstille for å finne den neste feilen i koden.

Merk: Ved hjelp av kompileringsalternativet kan vi bare rette kompilasjons- og syntaksfeilen.

VBA Feilhåndtering ved hjelp av forskjellige "PÅ FEIL" -erklæringer

1. Ved Feil Fortsett Neste

Her blir feilen ignorert og koden vil fortsette.

I eksemplet nedenfor kan 6 ikke deles med null, hvis du kjører den uten å angi On Error Resume Next statement, så oppstår nedenfor nevnte runtime-feil.

Kode:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Hvis On Error Resume Next blir lagt inn øverst i koden etter Sub-setning, ignorerer den kjøretidsfeil og går videre til neste setning, noe som resulterer i output på 6/2 dvs. 3 (popup-meldingsboks med resultat av det).

Kode:

 Sub RUNTIME_2 () Ved feil Fortsett neste MsgBox 6/0 MsgBox 6/2 End Sub 

2. På Feil GoTo 0 og Error GoTo -1

'On Error GoTo 0' vil stoppe koden på den spesifikke linjen som forårsaker feilen og viser en meldingsboks som beskriver eller indikerer feilen.

Kode:

 Sub onError_Go_to_0 () Ved feil GoTo 0 Kill "C: TempFile.exe" Range ("A1"). Verdi = 100 / "PETER" End Sub 

Vanligvis viser den standard feilkontroll oppførsel, den er betydelig når den brukes sammen med 'On Error Resume Next'.

Vanligvis kan du observere Runtime Error Message-boksen, inneholder alternativene 'Fortsett', 'Slutt', 'Debug' og 'Hjelp' . la oss sjekke bruken av hver av dem.

  • Fortsett alternativet vil ignorere unntaket og fortsette koden hvis det er mulig.
  • Sluttalternativet avslutter programmet.
  • Feilsøkingsalternativ vil markere utsagnet der feilen har oppstått. som hjelper deg med å feilsøke eller korrigere koden.
  • Hjelpealternativet tar deg til å åpne Microsofts MSDN hjelpeside.

På feil GoTo 0 med On Error Resume Next

Kode:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

I koden over vil den ignorere feil inntil den når On Error GoTo 0-setningen. Etter On Error GoTo 0-setning, går koden tilbake eller fortsetter til normal feilkontroll og utløser den forventede feilen fremover. Når jeg kjører koden ovenfor, vil den vise delingsfeilen, dvs. typefeil (numerisk verdi kan ikke deles med tekst).

På Feil GoTo 0 deaktiverer eventuell feilfanging som for øyeblikket er til stede i VBA-koden, dvs. slå av feilhåndteringen i hovedkoden, mens On Error GoTo -1 tømmer feilhåndteringen og setter den til ingenting som hjelper eller lar deg lage en annen feilfelle.

3. Feil GoTo <LABEL

VBA for å overføre programkontrollen til linjen etterfulgt av etiketten hvis noen runtime-feil oppstår, dvs. kode hopper til den spesifiserte etiketten. Her vil ikke kodeuttrykkene mellom unntakslinjen og etiketten bli utført.

Denne metoden er mer egnet og viktig for å forlate programmet grasiøst hvis det oppstår noen alvorlig dødelig feil under utførelsen.

I den nedenfor nevnte VBA-koden så snart feilen oppstår på linje 3, overfører programmet kontrollen til linjen 6 dvs. etiketten (popup-meldingen vises som "Exception handler" ).

Kode:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Denne linjen vil ikke bli utført" Exit Sub Error_handler: MsgBox "unntakshåndterer" End Sub 

Her kan du legge merke til at 'Exit Sub' skal brukes rett før etiketten 'Error_handler:', dette er gjort for å sikre at feilbehandlerblokken med kode skal stoppe eller ikke kjøres hvis det ikke er noen feil. Nå kan du lagre arbeidsboken din som en “Excel-makroaktivert arbeidsbok”. Ved å klikke på lagre som i venstre hjørne av regnearket.

Nok en gang, hvis du åpner en fil, kan du klikke på snarveistasten, dvs. Fn + Alt + f8, "Makro" -dialogboksen vises, hvor du kan kjøre en lagret makrokode etter eget valg, eller du kan klikke på Fn + Alt + F11 for et fullt makrovindu.

Ting å huske

  • Før du skriver kode, må du forsikre deg om at brudd på ubehandlede feil blir sjekket eller valgt ved en feil. fangstalternativ under generelt i verktøyets alternativer på VBA-verktøylinjen.
  • Det er en standardinnstilling som hjelper deg å stoppe koden din for feil som ikke håndteres.
  • Brudd på alle feil: Det vil stoppe koden din på alle typer feil.
  • Innbruddsklasmodul: I tilfelle et objekt som brukerform brukes i koden, vil det fremheve den nøyaktige linjen som forårsaker feilen.

Anbefalte artikler

Dette er en guide til VBA Feilhåndtering. Her diskuterer vi hvordan du bruker VBA Error Handling i Excel sammen med noen praktiske eksempler og nedlastbar Excel-mal. Du kan også gå gjennom andre foreslåtte artikler -

  1. VBA Declare Array (eksempler)
  2. VBA på feil
  3. VBA Unprotect Sheet
  4. VBA-kolonner | Excel-maler
  5. VBA-miljø

Kategori: