VBA-felhantering

Excel VBA Felhantering

I VBA när vi arbetar med koder kan vi stöta på många olika typer av fel och hur man felsöker dessa fel kallas Felhantering, nu kan det finnas några fel som görs i syntaxen som utmärker sig själv framhäver det men när det finns något fel som är utanför intervallet eller något som inte existerar ger oss en pop-up för samma, det är viktigt att veta vilken felkod som är för vilket fel för att identifiera felet i koden.

I Excel VBA när vi kör någon uppsättning koder får vi någon form av fel. Några av dessa fel är syntaxfel, andra är fel som inte kan köras. Syntaxfelet är när användaren gör det markeras i röd färg av excel själv. Men när det finns något annat slags körtidsfel, hur hanterar vi det och hur vi kommer utöver detta är vad vi kommer att täcka i den här artikeln.

Bortsett från syntaxfel måste de andra körtidsfelen hanteras medan alla koder utförs. Låt mig först ge ett exempel på hur det andra runtime-felet uppstår. Ta en titt på koden nedan,

Detta är en exempelkod när den körs returnerar det som är skrivet i msgbox-funktionen. Men som vi kan se att i den andra raden i koden finns det 4/0 vilket inte är möjligt i matematiska termer så det kommer att returnera ett körtidsfel. Låt oss köra ovanstående kod och se det fel vi får.

Detta är felet vi får när vi kör den angivna koden. Nu hur vi hanterar detta fel görs av Felhantering.

Det finns två metoder för att hantera fel som är:

  1. On Error Goto, och
  2. Vid fel Återuppta nästa.

Förklaring

Som förklarats ovan får vi många typer av fel i VBA, vissa är syntax och andra är körtid. Syntaxfel är redan markerade i röd färg, se till exempel skärmdump nedan,

Medan den andra är körtidsfel. I grund och botten kommer Excel att göra följande tre saker, antingen kommer det att visa ett fel eller ignorera det felet eller så kommer det att visa en viss uppsättning instruktioner. För att utföra sådana uppgifter måste vi ge instruktioner och detta kallas felhantering.

Hur hanterar jag fel i VBA-kod?

Du kan ladda ner denna VBA-felhanterings Excel-mall här - VBA-felhantering Excel-mall

Exempel nr 1

För det första exemplet låt oss ta den första koden som vi tog som demonstration. I exemplet ovan har vi sett att koden ger körtidsfel vid den andra msgbox-funktionen.

Skriv följande kod efter att underfunktionen har öppnats,

Koda:

 Delprov () vid fel Återuppta nästa MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Nu när vi kör koden ovan ser vi att kodraden som har felet inte körs. Excel hoppar över den raden och fortsätter på nästa rad.

Det finns en annan metod för att hantera felet är vba Goto Statement, vi ger excel en destination att gå till när den hittar ett fel. I stället för tidigare felhanteringskod satte vi in ​​följande kod,

Koda:

 Delprov () vid fel GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Vi ger excel Az som en destination att gå till om det hittar ett fel. Nu efter msgbox skriver du en annan kod enligt nedan,

Koda:

 Delprov () vid fel GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Klar: Avsluta sub 

Nu måste vi definiera destinationen az som vad den ska göra när excel hittar ett fel i koden.

Koda:

 Underprov () vid fel GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Klar: Avsluta Sub az: MsgBox "Detta är ett fel" & Err. Beskrivning End Sub 

Nu när vi kör den här koden ser vi resultatet visas.

Detta är det första msg-rutan och eftersom vi vet att vi har ett fel i nästa rad i vår kod, låt oss se resultatet vad excel kommer att ge.

Err.-beskrivningen ovan i koden hjälper oss att visa exakt vad felet har inträffat i vår kod.

Exempel 2

Vi har lärt oss hur vi hanterar fel i våra koder. Låt oss titta på ett annat exempel på hur fel hanteras. Betrakta följande kod som vårt andra exempel.

Vi har ett något liknande fel från exempel 1. Felet ligger i rad d = i / b. Nu kommer vi att hantera dessa fel genom att använda de två metoderna som förklaras ovan.

Skriv följande kod efter att underfunktionen har öppnats,

Koda:

 Delprov2 () Vid fel Återuppta nästa bx Dim i som heltal, b som heltal, c som heltal, d som heltal i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub 

Nu när vi kör vår kod kan vi se att den ignorerar den andra raden och bara visar värdet för C.

Ovanstående felhanterare var ett CV nästa, nu använder vi Go till där vi kommer att säga excel en destination att gå när den stöter på ett fel. Skriv ner följande kod,

Koda:

 Delprov2 () vid fel GoTo bx Dim i som heltal, b som heltal, c som heltal, d som heltal i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d

Bx är en destination som ges när den stöter på ett fel efter msgbox D skriv ner följande kod,

Koda:

 Delprov2 () vid fel GoTo bx Dim i som heltal, b som heltal, c som heltal, d som heltal i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub 

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

 Sub Sample2() On Error GoTo bx Dim i As Integer , b As Integer , c As Integer , d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub bx: MsgBox " This is another Error " & Err.Description End Sub 

Now when we execute the code we can see that excel first gives us the value for C.

Now in another step, it will give us the prompt we provided it when it encounters an error.

This is how we handle the normal runtime errors in Excel VBA.

Things to Remember

There are a few things we need to remember about Error Handling:

  1. On Error Resume Next Ignores the error.
  2. On Error GoTo Gives excel a destination when it encounters an error.
  3. The description is used to show the exact error occurred to the user.