VBA ved fejl

VBA On Error er en nem metode til håndtering af uventede undtagelser i Excel Macros.Det er kendt, at vi ikke kan skrive kode uden nogen fejl. Undertiden kan det at skrive stor kode give os fejlen, selv på tidspunktet for udarbejdelsen. For at undgå denne type situation tilføjer vi fejlmeddelelse, som i stedet for at give os det rigtige svar eller fejlkode, det vil vise os beskeden med fejlkode. Det ser ud til, at vi fik output af vores beregning, men det er fejlkoden, der bliver trykt.

Sådan bruges Excel VBA til fejlmeddelelse i Excel?

Der er 3 måder at fejle i VBA. Lad os forstå forskellige måder med nogle eksempler.

Eksempel 1

Den første fejltype er kodekompilationsfejl, der kommer, når en kode er ikke-erklærede eller umulige variabler. For at forstå mere vil vi bruge et simpelt matematisk udtryk for kløften. Gå hertil til Indsæt menu i VBA og vælg Modul som vist nedenfor.

Åbn nu underkategori og tilføj ethvert navn. Da vi bruger On Error, så har vi navngivet den samme.

 Sub OnError () End Sub 

Definer nu alle 2 eller 3 heltal. Her har vi taget X og Y som heltal.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal slut sub 

Som diskuteret ovenfor vil vi nu beregne matematiske udtryk for opdeling. For X lægger vi et tegn i Numerator og deler det 0. Og Y vil være 20/2, som er komplette tal.

 Sub OnError () Dim X som heltal, Y som heltal X = Test / 0 Y = 20/2 End Sub 

Kør nu koden ved at bruge F5-tasten eller klikke på afspilningsknappen som vist nedenfor. Vi får fejltid 6, som viser fejl ved tekst over nummer.

For nu at overskrive denne fejl tilføjer vi en linje Ved fejloptagelse næste, inden vi skriver den matematiske kode. Det springer fejlkoden, men vi kan ikke se resultatet af den anden matematiske kode. Dette skjuler kun fejlmeddelelsen, hvis forskellige kodelinjer som vist nedenfor. Prøv nu også at køre koden.

 Sub OnError () Dim X som heltal, Y som heltal ved fejl Genoptag næste X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

For nu at overskrive denne fejl tilføjer vi en linje Ved fejloptagelse næste, inden vi skriver den matematiske kode. Det springer fejlkoden, men vi kan ikke se resultatet af den anden matematiske kode. Dette skjuler kun fejlmeddelelsen, hvis forskellige kodelinjer som vist nedenfor. Prøv nu også at køre koden.

Eksempel 2

I dette eksempel overvejer vi den matematiske opdeling, der giver uendelig resultat, men ved kodning vil den # DIV / 0-resultat. For at demonstrere dette vil vi overveje endnu et heltal Z sammen med X og Y i underkategorien som vist nedenfor.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal slut sub 

Indram nu alle heltalene X, Y og Z med et matematisk udtryk for kløft og til at udskrive det skal du bruge MsgBox-funktion i VBA for hvert heltals resultat.

Nedenfor for Integer X har vi delt 10 med 0, 20 med 2 og 30 med 4.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Kør nu koden ved hjælp af F5-tasten eller manuelt som vist nedenfor.

Som vi kan se på ovenstående skærmbillede Run-time error 11, hvilket betyder, at fejlen er relateret til antallet. For at overvinde dette skal du tilføje en linje Ved fejl Genoptag næste før matematisk udtryk som vist nedenfor.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal ved fejl Genoptag næste X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Hvis vi nu kører koden, får vi nul for første heltal X, og for Y og Z får vi respektive inddelingssvar som vist nedenfor.

Eksempel 3

Den anden type fejl ses, når vi indtaster en forkert indtastning af data i koden. For dette overvejer vi 3 heltal X, Y og Z ved at åbne underkategorien i VBA som vist nedenfor.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal slut sub 

Overvej nu også den samme matematiske opdeling, som vi har set i ovenstående eksempel.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Hvis vi kører koden, får vi den samme fejlmeddelelse af run-time-fejl 11.

For at overskrive denne fejl skal du nu bruge teksten On Error GoTo med ordet ““ Resultat for at springe fejlmeddelelsen over og få output, der fungerer fint som vist nedenfor.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal på fejl GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Kør nu koden igen. Vi får det samme resultat som det forrige eksempel.

Ved fejl hjælper GoTo ZResult os med at hoppe direkte af det nævnte resultatpoint-heltal, som vi gjorde for heltal Z.

Eksempel 4

I den tredje fejltype, når vi kører koden, og VBA ikke er i stand til at forstå kodelinjen. Dette kan gøres ved hjælp af kode On Error Resume Next Next sammen med MsgBox Err.Number . Overvej de samme data som brugt i ovenstående eksempler. Vi vil igen se de samme 3 heltal X, Y og Z som vist nedenfor.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal slut sub 

Og til udskrivning af resultatudgangen skal du tillade meddelelsesbokse for alle heltal som output.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Hvis vi nu kører den komplette kode, får vi en fejlmeddelelse om matematisk fejl Kørselstid fejl 11.

Nu til at overskrive denne fejl bruger vi On Error Resume Next.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal ved fejl Genoptag næste X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Og kør koden. Dette giver brugsresultat på gyldig matematisk linje som vist nedenfor.

Tilføj nu yderligere ZResult- kodelinje før Z- heltalets matematiske udtryk og tilføj MsgBox Err.Number- kodelinjen i slutningen af ​​koden som vist nedenfor.

 Sub OnError () Dim X som heltal, Y som heltal, Z som heltal ved fejl Genoptag næste X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Nummer End Sub 

Kør nu koden ved hjælp af F5-tasten eller ved at trykke på afspilningsknappen som vist nedenfor.

Som vi kan se på ovenstående skærmbilleder. Den første meddelelsesboks har 0, som tilsidesætter det forkerte matematiske udtryk. 2. og 3. har et opdelingsresultat af Y- og Z-heltal. Og den sidste meddelelsesboks har løbetid fejlkode 11, som sandsynligvis er fejlkoden i X-heltalets delingsudtryk.

Fordele ved VBA ved fejl

  • Vi kan beregne enhver matematisk formel, selvom den er forkert.
  • For større kodningstrukturer, hvor der er chancer eller har en fejl, kan brug af disse metoder give korrekt resultat, selv blandt koden.
  • Dette giver et bedre resultat sammenlignet med resultatet opnået fra normale excel-beregninger.

Ting at huske

  • Gem altid filen i makroaktiveret Excel-fil, så vi kan bruge den oprettede VBA-kode mange og flere gange.
  • Kompilér altid den skriftlige kode, inden den implementeres med et excel-krav.
  • Hvis det er nødvendigt, skal du tildele den skriftlige kode til en vilkårlig knap, så vi hurtigt kan klikke på knappen og køre koden.

Du kan downloade denne VBA On Error Excel Template her - VBA On Error Excel Template

Anbefalede artikler

Dette har været en guide til Excel VBA ved fejl. Her diskuterede vi, hvordan man bruger VBA On Error Statement sammen med nogle praktiske eksempler og downloadbar excel-skabelon. Du kan også gennemgå vores andre foreslåede artikler–

  1. Hvordan bruges VBA TRIM-funktion?
  2. Nummerformat i VBA
  3. Vejledning til Excel VBA gør mens sløjfe
  4. Hvordan bruges VBA Find-funktion?

Kategori: