VBA om feilmeldinger - Topp 3 måter å håndtere feil på

Innholdsfortegnelse

Excel VBA On Error Statement

VBA On Error- setning er en type feilhåndteringsmekanisme som brukes til å veilede koden til å gjøre hva hvis den støter på en hvilken som helst type feil, vanligvis når en kode støter på en feil, stopper kjøringen, men med denne setningen i koden blir kjøringen av koden fortsetter slik den har sett med instruksjoner å gjøre når den støter på en feil.

Å forutse feilen i koden gjør deg til en proff i VBA-koding. Du kan ikke gjøre koden 100% effektiv. Selv om du er trygg på koden din på en eller annen måte, kan det føre til en feil.

Det er nesten en umulig oppgave å identifisere og håndtere alle slags feil, men vi har forskjellige måter å håndtere en feil i VBA på. Mens du skriver koden, kan du ikke forutse hva slags feilkode kan kaste opp, men hvis det oppstår feil, vil du bruke mer tid på feilsøking enn å skrive selve koden.

Hva er en feil?

En feil er bare en kodelinje kan ikke utføres på grunn av funksjonaliteten eller feil kode. Så prøv å forutse feilen og håndter den.

For eksempel, hvis du prøver å slette arket som ikke er der, så kan vi åpenbart ikke utføre den kodelinjen.

En feil er av tre typer, en kompileres feil på grunn av sortvariabler. Den andre er dataregistreringsfeil på grunn av feil oppføringer av koderen, og den tredje er kjøretidsfeil på grunn av at VBA ikke kan gjenkjenne kodelinjen. For å prøve å få tilgang til eller jobbe med et regneark eller arbeidsbok, som ikke er der.

Men vi har en uttalelse i VBA for å håndtere alle slags feil, dvs. "On Error" -uttrykk.

Typer av feilmeldinger

Nøkkelpunktet for håndteringsfeil i VBA er "On Error" -uttalelsen. For eksempel Ved feil, "fortsett neste linje", "gå til eller hopp til en annen linje" osv. …

On Error statement har tre typer utsagn.

  1. GoTo 0 betyr når kjøretidfeilen oppstår, excel eller VBA skal vise feilmeldingsboksen som sier hvilken type feil den har opplevd. Så snart VBA kjører koden, deaktiverer den alle feilhåndtererne i den aktuelle blokken på koden.
  2. Fortsett neste betyr når feilen oppstår, denne uttalelsen instruerer utmerket til å ignorere den feilen og gå videre til (gjenoppta neste) neste kodelinje uten å vise noen feilmeldinger. Det betyr ikke at det vil løse feilen; heller ignorerer det bare feilen.
  3. GoTo (label) betyr at når VBA støter på en feil, går du til den tildelte etiketten. Dette får koden til å hoppe til den spesifikke linjen som tilbys av koderen.

Topp 3 måter å håndtere feil i VBA

# 1 - Ved feil Gjenoppta neste

Anta at du deler verdien 20 med 0, og at du har erklært variabelen for å tildele resultatet av divisjonen til den.

Kode:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Hvis du kjører denne koden, vil den kaste feilen nedenfor.

Så du kan ikke dele noe tall med null verdi. Kjøretidens feilnummer er 11, dvs. divisjon etter null.

Nå vil jeg legge til en linje til koden.

Kode:

Sub OnError_Example1 () Dim i Som Integer, j As Integer i = 20/0 j = 20/2 End Sub

Nå vil jeg legge til uttalelsen On error CV neste øverst.

Kode:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub

Hvis jeg utfører denne koden, vil den ikke gi meg noen feilmeldinger. heller vil den utføre neste linje med kode, dvs. j = 20/2.

# 2 - På feil GoTo-etikett

Jeg har erklært tre variabler.

Kode:

Sub OnError_Example1 () Dim i Som Integer, j As Integer, k As Integer

For alle disse tre variablene vil jeg tildele en divisjonsberegning.

Kode:

Sub OnError_Example1 () Dim i Som Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Resultatet av alle disse tre beregningene vises i meldingsboksen.

Kode:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Verdien av i er" & i & vbNewLine & "Verdien av j er "& j & _ vbNewLine &" Verdien av k er "& k & vbNewLine End Sub

Nå vil jeg prøve å utføre denne koden siden beregningen av “jeg” ikke er riktig. Vi vil få kjøretidsfeil 11.

Nå vil jeg legge til uttalelsen "On Error Resume Next".

Kode:

Sub OnError_Example1 () Dim i Som Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "Verdien av i er" & i & vbNewLine & "The verdien av j er "& j & _ vbNewLine &" Verdien av k er "& k & vbNewLine End Sub

Hvis jeg utfører dette, hopper det over "I" -beregningen og utfører de resterende to beregningene, og resultatet blir som følger.

Nå i stedet for "On Error Resume Next", vil jeg legge til "On Error GoTo KCalculation."

Kode:

Sub OnError_Example1 () Dim i Som Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20/0 j = 20/2 K Kalkulasjon: k = 10/5 MsgBox "Verdien av i er" & i & vbNewLine & "Verdien av j er" & j & _ vbNewLine & "Verdien av k er" & k & vbNewLine End Sub
Merk: Her er "KCalculation" etikettnavnet jeg hadde gitt; du kan gi ditt eget etikettnavn uten plass.

Nå, hvis jeg kjører denne kodelinjen, hopper den ikke til neste linje. Snarere vil den hoppe til etikettnavnet jeg har angitt, dvs. "KCalcualtion." Her vil den ignorere feilen gitt av "I", og den vil ikke utføre "j" -beregning, men straks hopper den til "KCalcualtion."

# 3 - Utskriftsfeilnummer i VBA

På slutten av koden kan vi også skrive ut feilnummeret i en egen meldingsboks. Følgende kodelinje vil gjøre denne jobben.

Kode:

Feilnummer

Nå vil jeg kjøre denne koden første meldingsboks vil vise beregningsresultatene.

Klikk på OK. Det viser en melding for å vise feilnummeret.

Vi går 11; som et resultat, dvs. divisjon av null.

Vi kan også få feilbeskrivelsen i stedet for nummeret. Vi trenger bare å endre koden. Nedenfor er koden.

Kode:

Feil beskrivelse

Det vil vise beskrivelse som dette.

Ting å huske

  • Etter at du har skrevet "On Error Resume Next" på slutten av koden, ikke glem å legge til setningen "On Error GoTo 0."
  • Navnet på etiketten skal være det samme begge steder.
  • Etikettnavn trenger ikke å være definert i god tid.
  • Til slutt, se alltid hva feilen skjedde gjennom den separate meldingsboksen.

Interessante artikler...