VBA vid fel GoTo - Typer av felmeddelanden i VBA

Innehållsförteckning

Excel VBA vid fel GoTo

Fel är en del av alla kodningsspråk, och VBA-makron skiljer sig inte från detta. Enligt min mening är 90% av jobbet gjort att hitta 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 måste vi ignorera felet, eller ofta vill vi kanske 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. Vid fel Goto 0
  2. On Error Goto (etikett)
  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?

# 1 - Vid fel Återuppta nästa

Som uttalandet själv säger betyder "On Error Resume Next" när 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 kalkylbladsnamnen och bad om 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" Slut Sub

Nu har jag nedanstående kalkylblad i min arbetsbok.

  • Jag kommer att köra koden och se vad som händer.
  • Vi fick felet "Subscript Out of Range", klicka på "Debug" för att se i vilken rad vi fick felet.
  • Så i raden "Kalkylblad (" Ws 3 "). Välj" fick vi ett fel. Detta beror på att det i vårt arbetsbok inte finns något kalkylblad med namnet "Ws 3", så att ett fel uppstod.

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 ignorerar den felet och fortsätter till nästa kodrad.

# 2 - Vid fel GoTo 0

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

En som du använder uttalandet “Fortsätt nästa”, 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 i andra delar av koden. Vi vill 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 meddela 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 på den önskade kodraden.

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 läser makrot felhanteringsuttalandet tryck på F8-tangenten kör 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 kodrad har det hoppat till felhanteringsetiketten "ErrorMessage", som beskrivs genom uttalandet "On Error GoTo (Label)".

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

Saker att komma ihåg

  • Vba On Error GoTo 0 aktiverar felmeddelandet en gång till, 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 endast felhanteraren för det kodblocket.

Intressanta artiklar...