VBA Ved feil CV Neste - Eksempler på VBA Ved feilsøking Neste

Innholdsfortegnelse:

Anonim

Excel VBA Ved feil CV igjen

Feilhåndtering er en veldig nyttig og betydelig mekanisme for programmeringsspråk som VBA Feilkontroll eller forebygging, som er et aspekt av Feilhåndtering som betyr å ta effektive og betydningsfulle tiltak i et VBA-skript for å unngå forekomst av en popup-melding om feil. Excel-VBA på feil gjenoppta neste setning ignorerer kodelinjen som forårsaker en feil og fortsetter eller dirigerer kjøringen til neste linje etter linjen som forårsaket feilen.

MERKNAD: Ved feil fortsett Neste setning løser ikke runtime-feilene, det er en feil som ignorerer hvor kjøringen av VB-program vil fortsette fra linjen som har forårsaket runtime-feilen.

I utgangspunktet brukes Fortsett med gjenoppta neste når du vil ignorere feilen og fortsette eller gjenopprette kjøringen av koden til neste celle.

Typer feil i VBA

Nedenfor er de forskjellige typene feil i VBA:

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

Ovennevnte feil kan utbedres ved hjelp av feilsøking og "On Error" -erklæringer i en kode. Runtime Error kan forhindres ved hjelp av On Error Resume Next.

VBA Runtime Error:

Før forklaringen om On Error Resume Next, bør du være klar over runtime-feil når umulige matematiske utsagn eller uttrykk finnes i en setning, da oppstår denne runtime-feilen.

Eksempler på Excel VBA ved feiloppdatering Neste

Nedenfor er de forskjellige eksemplene på On Error Resume Next i Excel VBA:

Du kan laste ned denne VBA Ved feil Gjenoppta neste Excel-mal her - VBA Ved feil Gjenoppta neste Excel-mal

VBA Ved feil CV igjen - Eksempel # 1

Her blir en feil ignorert, og utførelsen av kode 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 (neste) blir skrevet inn øverst i koden etter SUB-setning, ignorerer den runtime-feil og går videre til neste statement, resulterer i en utgang på 6/2 (popup-meldingsboks med resultat av den).

Kode:

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

VBA Ved feil CV igjen - Eksempel # 2

Jeg kan bruke On Error Resume Next hvor som helst i koden fra begynnelse til slutt. I eksemplet nedenfor må jeg gjøre en 3-beregning, dvs.

9/3 =?

9/0 =?

9/2 =?

I ovennevnte eksempel kan du observere en andre beregning der et hvilket som helst tall ikke kan deles med null, dvs. 9 kan ikke deles med null i det andre trinnet. Anta at hvis du kjører makroen uten å angi On Error Resume Next statement, nå kan jeg utføre koden trinn for trinn ved hjelp av trinn inn eller F8-tast for å forstå hvordan den fungerer.

Nå kjører jeg koden ovenfor ved å klikke på trinn til alternativet eller F8-tasten ofte, steg for steg. Jeg bare kopierer koden ovenfor og begynner å kjøre den trinn for trinn, for det første trinnet i beregningen vises meldingsboks 3.

Kode:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Når jeg kjører den andre kodelinjen, oppstår under nevnte kjøretidsfeil på det andre trinnet i en kode, der et hvilket som helst tall ikke kan deles med null, dvs. 9 kan ikke deles med null i det andre trinnet.

Kode:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Hvis jeg til og med klikker på feilsøking, kan den ikke fortsette videre, der den vil ta meg til den andre kodelinjen (Den blir uthevet i gul farge), der jeg trenger å gjøre korreksjonen. Så her, hvis du klikker videre på Step Into-alternativet eller F8-tasten, vil den tredje beregningen i denne koden ikke bli utført.

For å rette opp eller håndtere denne runtime-feilen, må jeg bruke eller utføre setningen OnError Resume Next over en andre kode eller i begynnelsen av koden under substatementet. slik at den hopper over den linjen med kode og går videre til tredje trinn i koden og beregner verdien.

Kode:

 Sub RUNTIME_30 () MsgBox 9/3 On Error Resume Next MsgBox 9/0 MsgBox 9/2 End Sub 

ELLER

 Sub RUNTIME_31 () Ved feil Fortsett neste MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Nå har jeg lagt til ved en feiltakelse for å fortsette neste uttalelse til koden, der du kan bruke hvilken som helst av kodene ovenfor. Hvis du kjører den trinn for trinn, får du en popup med to meldinger, den ene er den første koden og den tredje koden beregning. Ved Feil Fortsett Neste vil ignorere kjøretidsfeilen i den andre koden og gå videre til den tredje koden.

VBA Ved feil CV igjen - Eksempel # 2

Vi vil nå se Kombinasjonen av On Error Resume Next med Error GoTo 0. I koden nedenfor ignorerer den feil til den når On Error GoTo 0 statement. Etter On Error GoTo 0-setning, går koden tilbake eller fortsetter til normal feilkontroll og utløser den forventede feilen fremover.

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 

Når jeg kjører koden ovenfor, vil den vise delingsfeilen, dvs. typefeil (numerisk verdi kan ikke deles med tekst).

Nå kan du lagre arbeidsboken din som en “Excel-makroaktivert arbeidsbok”. Ved å klikke på lagre som i venstre hjørne av regnearket.

når du åpner denne excel-filen igjen, kan du bruke den nevnte snarveistasten dvs.

Funksjon + Alt + F11 hurtigtast hjelper deg med å få tilgang til all den opprettede makrokoden i arbeidsboka. Funksjon + Alt + F8 hurtigtast hjelper deg med å åpne et “Makro” -dialogboksvindu, som inneholder alle makronavnene, der du kan kjøre en spesifikk makrokode du ønsker.

Ting å huske

  • Feil i kjøretid blir lydløst fanget og lagret i det globale Err-objektet
  • Ved feil Gjenoppta Neste forhindrer vanligvis et avbrudd i kjøringen av kode.
  • Feilobjektegenskaper (Err Object) blir automatisk slettet når Resume Next blir brukt i en feilhåndteringsrutine

Anbefalte artikler

Dette er en guide til VBA On Error Resume Next. Her diskuterer vi forskjellige typer feil i VBA Excel sammen med noen praktiske eksempler og nedlastbar Excel-mal. Du kan også gå gjennom andre foreslåtte artikler -

  1. Komplett guide til VBA-makroer
  2. VBA DateDiff (eksempler med Excel-mal)
  3. Hvordan bruke målsøk i VBA?
  4. VBA Protect Sheet with Syntax
  5. VBA-miljø