VBA vid fel GoTo

Excel VBA vid fel GoTo

Fel är en del av alla kodningsspråk och VBA-makron skiljer sig inte från detta. Enligt min åsikt är 90% av jobbet gjort att finna varför felet inträffar och 10% ligger i hur man åtgärdar felet. I varje kodningsspråk använder kodare sitt eget sätt att hantera fel i sin kodning, så använder vi också i VBA-kodning. Ofta behöver vi ignorera felet eller ofta vill vi gå till specifika saker när felet inträffar. ”On Error” är det uttalande vi behöver använda i VBA för att hantera fel.

Detta uttalande har tre typer av uttalanden och nedan är listan.

  1. On Error Goto 0
  2. On Error Goto [label]
  3. Vid fel Återuppta nästa

I den här artikeln kommer vi att se hur dessa tre uttalanden används i VBA-kodning för att hantera alla slags fel.

Hur använder jag VBA On Error Statements?

Du kan ladda ner denna VBA On Error GoTo Statement-mall här - VBA On Error GoTo Statement Template

# 1 - Vid fel Återuppta nästa

Som uttalandet i sig säger "On Error Resume Next" betyder närhelst felet inträffar i koden "återuppta" nästa rad i koden genom att ignorera felradkoden. Ta nu en titt på koden nedan.

I koden nedan har jag nämnt kalkylbladets namn och frågat att ange värdet i den första cellen som "Felprovning".

Koda:

 Sub On_Error_Resume_Next () Kalkylblad ("Ws 1"). Välj intervall ("A1"). Värde = "Felprovning" Kalkylblad ("Ws 2"). Välj intervall ("A1"). Värde = "Felprovning" Kalkylblad ( "Ws 3"). Välj intervall ("A1"). Värde = "Felprovning" Kalkylblad ("Ws 4"). Välj intervall ("A1"). Värde = "Felprovning" Avsluta 

Nu har jag nedanstående kalkylblad i min arbetsbok.

  • Jag kommer att köra koden och se vad som händer.

  • Vi fick “Subscript Out of Range” -felet, klicka på “Debug” för att se i vilken rad vi fick felet.

  • Så i raden "Arbetsblad (" Ws 3 "). Välj" fick vi ett fel, detta beror på att det i vårt arbetsbok inte finns något kalkylblad som heter "Ws 3", så det stötte på ett fel.

I sådana fall kanske vi vill ignorera felet och återuppta exekveringen av koden till nästa rad, det är här vår felhanterare "On Error Resume Next" kommer in i bilden.

  • Allt vi behöver göra är att lägga till raden "On Error Resume Next" i början av makrot.

Kör nu den här koden och den kommer inte att visa något felmeddelande, för när kod stöter på ett fel kommer den att ignorera felet och fortsätta till nästa kodrad.

# 2 - Vid fel GoTo 0

Detta är inte en felhanterare snarare felmeddelande möjliggör efter att vi inaktiverar felmeddelandet med uttalandet "On Error Resume Next".

En som du använder ”Resume Next” uttalande VBA-makron börjar ignorera alla typer av fel som uppstår och fortsätter med nästa kodrad. Men vi vill inte att detta ska hända hela tiden eftersom vissa fel måste vi ignorera avsiktligt andra behöver vi ett meddelande.

Om någon specifik kod anger ett fel i det kodblocket behöver vi bara ignorera fel andra delar av koden vill vi inte ignorera felet.

  • Titta på bilden nedan för användning av uttalandet ”On Error GoTo 0”.

Så nu kommer fel att ignoreras tills koden hittar felet som meddelar aktiveraren "On Error GoTo 0". När denna kodrad kör makron tillbaka till det normala och börjar kasta felmeddelanden som vanligt.

# 3 - Vid fel GoTo-etikett

Vi har sett hur man ignorerar felet och hur man aktiverar felmeddelandet. Nu med den här metoden kan vi gå till en specifik kodrad.

I den här metoden betyder "Etikett" att vi kan ge vilket namn som helst till denna etikett och samma etikett bör också anges vid önskad kodrad.

Titta till exempel på samma kod från exemplet ovan.

Låt oss nu utföra koden rad för rad genom att trycka på F8-funktionsknappen.

Nu kommer makro att läsa felhanteringsuttalandet, tryck på F8-tangenten för att köra den första 2-kalkylarkoden.

Nu håller makro på att utföra den tredje kalkylarkoden som inte finns i arbetsboken, tryck på F8-tangenten och se vad som händer.

Eftersom makro stötte på ett fel i nedanstående kodraden har det hoppat till felhanteringsetiketten "ErrorMessage" som beskrivs genom "On Error GoTo [Label]" uttalande.

Nu kommer meddelandefältet att visa meddelandet "Fel uppstod och avsluta makroen".

Saker att komma ihåg

  • VBA On Error GoTo 0 aktiverar felmeddelandet igen, så glöm inte att lägga till detta efter att ha levererat en felhanterare.
  • Du måste vara helt säker på i vilken del av koden du vill ignorera felet, så bifoga felhanteraren endast för det kodblocket.