VBA On Error Goto 0

Excel VBA On Error Goto 0

VBA On Error GoTo 0 är ett felhanteringsuttalande som används för att inaktivera den aktiverade felhanteraren i proceduren. Det kallas ”Disable Error Handler Disabler”.

Felhantering på något av programmeringsspråken är en masterklass som alla kodare behöver förstå. VBA programmeringsspråk också, och vi har också tekniker för felhantering på detta programmeringsspråk. "On Error Resume Next" aktiverar felhanteraren och "On Error GoTo 0" inaktiverar den aktiverade felhanteraren.

Både “On Error Resume Next” och “On Error GoTo 0” är par som måste användas tillsammans för att koden ska bli effektiv. För att hantera fel måste vi börja med uttalandet "On Error Resume Next" och för att avsluta denna felhanterare måste vi använda uttalandet "On Error GoTo 0".

Varje linjekod som skrivs mellan dessa uttalanden ignorerar alla typer av fel som uppstod under förfarandet.

Hur man använder On Go Go Too-uttalande?

Du kan ladda ner denna VBA On Error Goto 0 Excel-mall här - VBA On Error Goto 0 Excel-mall

För ett exempel, se nedanstående kod.

Koda:

 Sub On_ErrorExample1 () Kalkylblad ("Sheet1"). Välj intervall ("A1"). Värde = 100 Kalkylark ("Sheet2"). Välj intervall ("A1"). Värde = 100 Slut Sub 

Vad ovanstående kod gör är att den först väljer kalkylbladet ”Sheet1” och i cell A1 infogar värdet 100.

Koda:

Kalkylblad ("Sheet1"). Välj intervall ("A1"). Värde = 100

Sedan kommer det att välja kalkylbladet ”Sheet2” och infoga samma värde.

Koda:

Kalkylblad ("Sheet2"). Välj intervall ("A1"). Värde = 100

Nu har jag nedanför arken i min arbetsbok.

Det finns inga ark som heter "Sheet1" och "Sheet2", när vi kör koden kommer det att stöta på ett fel som nedan.

Eftersom det inte finns något ark som heter "Sheet1" har det stött på "Subscript out of range". För att hantera detta fel lägger jag till ett felhanteringsuttalande ”On Error Resume Next” högst upp i makrot.

Koda:

 Sub On_ErrorExample1 () Vid fel Återuppta nästa kalkylblad ("Sheet1"). Välj intervall ("A1"). Värde = 100 kalkylblad ("Sheet2"). Välj intervall ("A1"). Värde = 100 Slut sub 

Kör nu koden och se vad som händer.

Det ger inga felmeddelanden eftersom felhanteringsuttalandet On Error Resume Next är aktiverat.

Föreställ dig scenariot där vi behöver ignorera felet om kalkylbladet "Sheet1" inte finns tillgängligt, men vi måste meddela om det inte finns något kalkylblad som heter "Sheet2".

Eftersom vi har lagt till On Error Resume Next längst upp, har det börjat hantera felet men samtidigt måste vi ange hur många rader vi behöver för att ignorera detta fel.

I det här exemplet behöver vi bara ignorera felet för det första kalkylbladet men för det andra arket och framåt behöver vi felet uppstå om det inte finns något kalkylblad "Sheet2". Så efter att den första kalkylarkoden lägger till felavaktiverar raden On Error GoTo 0.

Koda:

 Sub On_ErrorExample1 () Vid fel Återuppta nästa kalkylblad ("Sheet1"). Välj intervall ("A1"). Värde = 100 On Error Gå till 0 kalkylblad ("Sheet2"). Välj Range ("A1"). Värde = 100 End Sub 

Kör nu koden rad för rad för att se effekten genom att trycka på F8-tangenten.

Om du nu trycker på F8-tangenten en gång kommer kodutförandet att hoppa till nästa rad och aktiv raduppgift kommer att utföras. Nu är den aktiva raden (gul-färgad linje) felhanteraren ”On Error Resume Next” och felhanteraren aktiveras.

Nu inträffar något fel kommer det att ignoreras tills det kör felhanteraren inaktiverar koden " On Error GoTo 0 ".

I föregående försök har vi stött på fel men tryck på F8-tangenten en gång till och se magin.

Utan att ge någon form av fel har koden återupptagits trots att det inte finns något kalkylblad "Sheet2" att välja. Tryck nu på F8 igen.

Eftersom det inte fanns något ark 1 kan det inte infoga värdet i A1-cellen som 500, men vad det gör är att det infogar värdet 500 i cell A1, oavsett vilket kalkylblad som är aktivt. Mitt aktiva ark när jag kör koden var ”Sheet3”, så värdet 100 sätts in i cellen A1.

Nu är den aktiva kodraden " On Error GoTo 0 ", genom att trycka på F8-tangenten kommer denna raduppgift att utföras.

Eftersom “On Error GoTo 0” körs har det stoppat felhanteringsprocessen och igen visar fel om något inträffar. Tryck på F8-tangenten och se felet.

I det föregående fallet utan On Error GoTo 0 har det också ignorerat detta fel, men eftersom vi har lagt till felhanteringsavaktiverare har det börjat visa felet igen.

Saker att komma ihåg här

  • Både On Error Resume Next och On Error GoTo 0 måste användas som “ Error Handler Enabler ” och “ Error Handler Disabler ”.
  • Alla rader med koder mellan dessa två påståenden stöter på ett fel som kommer att ignoreras.
  • Om det finns On Error GoTo 0-uttalande kommer felhanteraren att avaktiveras efter avslutning av underproceduren.