Excel VBA-fejlhåndtering

Fejlhåndtering er en meget nyttig og betydelig mekanisme til programmeringssprog som VBA. Fejlkontrol eller -forebyggelse er et aspekt af fejlhåndtering, hvilket betyder, at der træffes effektive og betydningsfulde forholdsregler i et VBA-script for at undgå forekomst af fejlmeddelelse

Forskellige typer fejl i VBA

  1. Syntaksfejl eller parseringsfejl
  2. Compile- eller kompilationsfejl
  3. Kørselsfejl
  4. Logisk fejl

Ovenstående fejl kan afhjælpes ved hjælp af nedenstående debug & forskellige 'On Error' -erklæringer indsat mellem en kode.

Ved fejl Genoptag næste

Ved fejl Goto 0

Ved fejl Goto

Ved fejl Gå -1

VBA Fejlhåndtering ved hjælp af forskellige 'ON ERROR' erklæringer

Du kan downloade denne VBA-fejlhåndtering af Excel-skabelon her - VBA-fejlhåndtering af Excel-skabelon

Eksempel # 1 - VBA-kompileringsfejl

Når der er en fejl i en sætning eller syntaks for VBA-kode, når du fejlagtigt indtaster en kode ved en fejltagelse, vil den blive fremhævet i rød farve afhængigt af indstillingsindstillingerne i værktøjer (Hvis du har valgt Auto syntaksekontrol).

En popup-meddelelsesboks med kompileringsfejl vises, når du kører koden med forkert syntaks.

Kode:

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

“COMPILE ERROR: VARIABLE NOT DEFINED” er den mest almindelige fejl, der vises som en popup-meddelelse. når referencevariablen ikke er defineret, opstår denne fejl.

Kode:

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

I ovenstående eksempel har jeg ikke erklæret variabeltypen som streng derfor, denne fejl opstår. Så jeg er nødt til at erklære en variabel som Dim A som streng.

Kode:

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

Eksempel 2 - VBA Kørselsfejl

Når en umulig matematisk udsagn eller udtryk findes i en erklæring, opstår denne runtime-fejl.

Kode:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Eksempel # 3 - VBA-logiske fejl eller fejl

Disse fejl er meget vanskelige at spore, hverken vil blive fremhævet, eller der vises pop-up-fejlmeddelelse. det vil resultere i uventede handlinger og forkerte resultater.

Eksempel: Når der er to variabler i koden, kan den indeholde en forkert. I dette tilfælde opstår der en logisk fejl.

Sådan forhindres fejl i VBA?

Lad os se, hvordan man forhindrer ovennævnte forskellige typer fejl i VBA Excel.

Trin 1: Åbn et VB Editor-vindue Vælg eller klik på Visual Basic i kodegruppen på fanen Udvikler, eller du kan direkte klikke på genvejstasten Alt + F11 .

Trin 2: For at oprette et tomt modul skal du højreklikke på ark 1 (VB_ERROR HANDLING) og indsætte modulet under Microsoft Excel-objekter og indsætte modulet, så der oprettes et nyt tomt modul.

VBA-fejlhåndtering med fejlfinding

Det er bedre at udarbejde kode, før vi kører den. For at følge samlingen skal nedenstående trin følges. På VB-menuværktøjslinjen under indstillingen Debug skal vi vælge et kompileret VBA-projekt. Når du klikker på den, kontrollerer den koden trin for trin, når den først finder fejlen, vil den fremhæve den & popup-meddelelsen vises, hvorved du skal rette den. når den er rettet, skal du kompilere for at finde den næste fejl i koden.

Bemærk: Ved hjælp af indstillingen compile kan vi kun rette kompilering & syntaksfejl.

VBA Fejlhåndtering ved hjælp af forskellige 'ON ERROR' erklæringer

1. Ved fejl Genoptag næste

Her ignoreres fejlen, og koden fortsætter.

I det nedenstående eksempel kan 6 ikke divideres med nul, hvis du kører den uden at indtaste On Error Resume Next statement, opstår der nedenfor nævnte runtime-fejl.

Kode:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Hvis On Error Resume Next indtastes øverst i koden efter Sub-sætning, ignorerer den runtime-fejl og går videre til den næste sætning, hvilket resulterer i output på 6/2 dvs. 3 (Popup-meddelelsesboks med resultat deraf).

Kode:

 Sub RUNTIME_2 () Ved fejl Genoptag næste MsgBox 6/0 MsgBox 6/2 End Sub 

2. Ved fejl GoTo 0 og Error GoTo -1

'On Error GoTo 0' vil stoppe koden på den specifikke linje, der forårsager fejlen, og viser en meddelelsesboks, der beskriver eller angiver fejlen.

Kode:

 Sub onError_Go_to_0 () Ved fejl GoTo 0 Kill "C: TempFile.exe" Range ("A1"). Værdi = 100 / "PETER" End Sub 

Normalt viser det standard fejlkontrol opførsel, det er vigtigt, når det bruges sammen med 'On Error Resume Next'.

Normalt kan du se boksen Runtime Error Message, indeholder valgmulighederne 'Fortsæt', 'Slut', 'Debug' og 'Hjælp' . lad os tjekke brugen af ​​hver af dem.

  • Indstillingen Fortsæt ignorerer undtagelsen og fortsætter koden, hvis den er mulig.
  • Slutindstillingen afslutter programmet.
  • Debug- indstilling vil fremhæve udsagnet, hvor fejlen er opstået. hvilket hjælper dig med at fejlsøge eller rette koden.
  • Hjælpefunktion vil tage dig til at åbne Microsoft MSDN-hjælpesiden.

Ved fejl GoTo 0 med On Error CV igen

Kode:

 Sub onError_Go_to_0_with_Resume_next () Ved fejl Genoptag næste dræbning "C: TempFile.exe" ved fejl GoTo 0 Range ("A1"). Værdi = 100 / "PETER" End Sub 

I ovenstående kode ignorerer den fejl, indtil den når On Error GoTo 0-erklæring. Efter On Error GoTo 0-sætning går koden tilbage eller fortsætter til normal fejlkontrol og udløser den forventede fejl fremad. Når jeg kører ovennævnte kode, viser den delingsfejlen, dvs. type misforhold (numerisk værdi kan ikke deles med tekst).

Ved fejl GoTo 0 deaktiverer enhver fejlfangning, der i øjeblikket findes i VBA-koden, dvs. sluk for fejlhåndtering i hovedkoden, mens On Error GoTo -1 rydder fejlhåndteringen og indstiller den til intet, der hjælper eller giver dig mulighed for at oprette en anden fejlfælde.

3. Ved fejl GoTo <LABEL

VBA for at overføre programstyringen til linjen efterfulgt af etiketten, hvis der opstår nogen runtime-fejl, dvs. kode springer til den specificerede etiket. Her udføres ikke koderangivelserne mellem undtagelseslinjen og etiketten.

Denne metode er mere velegnet og vigtig til at afslutte programmet grådigt, hvis der opstår en større dødelig fejl under udførelsen.

I nedenstående VBA-kode, så snart fejlen opstår på linje 3, overfører programmet kontrollen til linjen 6 dvs. etiketten (pop-up-meddelelse vises som "undtagelseshåndterer" ).

Kode:

 Sub OnError_Go_to_Label () Ved fejl GoTo Error_handler: MsgBox 9/0 MsgBox "Denne linje udføres ikke" Exit Sub Error_handler: MsgBox "undtagelseshåndterer" End Sub 

Her kan du bemærke, at 'Exit Sub' skal bruges lige inden etiketten 'Error_handler:', dette gøres for at sikre, at fejlhåndteringsblokken med kode skal stoppe eller ikke udføres, hvis der ikke er nogen fejl. Nu kan du gemme din projektmappe som en "Excel-makroaktiveret projektmappe". Ved at klikke på Gem som i venstre hjørne af regnearket.

Hvis du endnu en gang åbner en fil, kan du klikke på genvejstasten, dvs. Fn + Alt + f8, "Makro" -dialogboksen vises, hvor du kan køre en gemt makrokode efter eget valg eller du kan klikke på Fn + Alt + F11 for et fuldt makrovindue.

Ting at huske

  • Inden du skriver kode, skal du sikre dig, at brud på uhåndterede fejl kontrolleres eller vælges med fejl. fældefunktion under generelt i værktøjets indstillinger på VBA-værktøjslinjen.
  • Det er en standardindstilling, der hjælper med at stoppe din kode for fejl, der ikke håndteres.
  • Brud på alle fejl: Det stopper din kode på alle typer fejl.
  • Indbrudsklasse-modul: Hvis et objekt som brugerformular bruges i koden, vil det fremhæve, at den nøjagtige linje forårsager fejlen.

Anbefalede artikler

Dette er en guide til VBA Fejlhåndtering. Her diskuterer vi, hvordan man bruger VBA Fejlhåndtering i Excel sammen med nogle praktiske eksempler og downloadbar excel-skabelon. Du kan også gennemgå vores andre foreslåede artikler -

  1. VBA erklærer array (eksempler)
  2. VBA ved fejl
  3. VBA Ubeskyttelsesark
  4. VBA-søjler | Excel-skabeloner
  5. VBA-miljø

Kategori: