VBA-felhantering - Guide till felhantering i Excel VBA

Innehållsförteckning

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 får vi någon typ av fel när vi kör någon uppsättning koder. Några av dessa fel är syntaxfel; vissa är fel som inte kan köras. Syntaxfelet är när det görs av användaren 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 kommer vi 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 visar det ett fel eller ignorerar 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?

Exempel 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 tillhandahåller excel som en destination att gå till när den hittar ett fel. Istället för den tidigare felhanteringskoden satte vi in, skriv ner 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, skriv 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 Slutund

Now when we execute our code, we can see that it ignores the second line and just displays the value for C.

The above error handler was a resume next, and now we will use the Go to wherein we will tell we excel a destination to go when it encounters an error. 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

The bx is a destination given when it encounters an error after msgbox D 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

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

Code:

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: Avsluta Sub bx: MsgBox "Detta är ett annat fel" & Err. Beskrivning slut sub

Nu när vi kör koden kan vi se att excel först ger oss värdet för C.

Nu i ett annat steg kommer det att ge oss den uppmaning vi gav det när det stöter på ett fel.

Så här hanterar vi de vanliga körfelen i Excel VBA.

Saker att komma ihåg

Det finns några saker vi behöver komma ihåg om felhantering:

  1. Vid fel Återuppta nästa, ignorerar felet.
  2. On Error GoTo Gives utmärker en destination när den stöter på ett fel.
  3. Beskrivningen används för att visa det exakta felet som inträffade för användaren.

Intressanta artiklar...