VBA On Error Goto 0 | Sådan bruges du ved fejl GoTo 0 i Excel VBA?

Excel VBA On Error Goto 0

VBA On Error GoTo 0 er en erklæring om fejlhåndtering, der bruges til at deaktivere den aktiverede fejlhåndtering i proceduren. Det omtales som “Disabler for fejlhåndtering”.

Fejlhåndtering på et af programmeringssprogene er en masterklasse, som alle kodere har brug for at forstå. VBA programmeringssprog, og vi har også fejlhåndteringsteknikker på dette programmeringssprog. "On Error Resume Next" aktiverer fejlhåndteringen, og "On Error GoTo 0" deaktiverer den aktiverede fejlhåndtering.

Både "On Error Resume Next" og "On Error GoTo 0" er par, der skal bruges sammen for at effektivisere koden. For at håndtere fejl skal vi starte med udsagnet "On Error Resume Next" og for at afslutte denne fejlhåndterer skal vi bruge udsagnet "On Error GoTo 0".

Enhver linjekode skrevet mellem disse udsagn ignorerer enhver form for fejl, der opstod under proceduren.

Sådan bruges On Error GoTo 0-erklæring?

Du kan downloade denne VBA On Error Goto 0 Excel-skabelon her - VBA On Error Goto 0 Excel-skabelon

For et eksempel se nedenstående kode.

Kode:

 Sub On_ErrorExample1 () regneark ("Sheet1"). Vælg område ("A1"). Værdi = 100 regneark ("Sheet2"). Vælg Range ("A1"). Værdi = 100 End Sub 

Hvad ovenstående kode gør, er at den først vælger regnearket med navnet “Ark1” og i celle A1 indsætter den værdien 100.

Kode:

Arbejdsark ("Ark1"). Vælg rækkevidde ("A1"). Værdi = 100

Derefter vælger det regnearket med navnet “Sheet2” og indsætter den samme værdi.

Kode:

Arbejdsark ("Ark2"). Vælg rækkevidde ("A1"). Værdi = 100

Nu har jeg nedenunder ark i min projektmappe.

Der er ingen ark kaldet "Sheet1" & "Sheet2", når vi kører koden, vil den støde på en fejl som nedenfor.

Da der ikke er noget ark, der hedder “Sheet1”, er der stødt på “Subscript out of range” -fejl. For at håndtere denne fejl vil jeg tilføje en fejlhåndteringserklæring "On Error Resume Next" øverst i makroen.

Kode:

 Sub On_ErrorExample1 () Ved fejl Genoptag næste regneark ("Ark1"). Vælg område ("A1"). Værdi = 100 regneark ("Ark2"). Vælg område ("A1"). Værdi = 100 Afslut sub 

Kør nu koden og se hvad der sker.

Det giver ingen fejlmeddelelser, fordi erklæringen om fejlhåndtering On Error Resume Next er aktiveret.

Forestil dig scenariet, hvor vi skal ignorere fejlen, hvis regnearket "Sheet1" ikke er tilgængeligt, men vi er nødt til at underrette, hvis der ikke er noget regneark, der hedder "Sheet2".

Da vi har tilføjet On Error Resume Next øverst, er det begyndt at håndtere fejlen, men på samme tid skal vi specificere, hvor mange linjer vi har brug for for at ignorere denne fejl.

I dette eksempel er vi bare nødt til at ignorere fejlen for det første regneark, men for det andet ark skal vi have fejlen, hvis der ikke er noget regneark "Sheet2". Så efter at det første regneark kode tilføjer fejl deaktiver linjen On Error GoTo 0.

Kode:

 Sub On_ErrorExample1 () On Error Genoptag næste regneark ("Sheet1"). Vælg Range ("A1"). Værdi = 100 On Error Gå til 0 regneark ("Sheet2"). Vælg Range ("A1"). Value = 100 End Sub 

Kør nu koden linje for linje for at se effekten ved at trykke på F8-tasten.

Hvis du nu trykker på F8-tasten, når kodeudførelse hopper til næste linje, og den aktive linjeopgave udføres. Nu er den aktive linje (gulfarvet linje) "On Error Resume Next" -fejlhåndteringen, og fejlhåndteringen aktiveres.

Nu opstår der en fejl, den ignoreres, indtil den udfører fejlhåndteringen deaktiverer koden " On Error GoTo 0 " -erklæringen.

I det forrige forsøg har vi stødt på fejl, men tryk på F8-tasten en gang til og se magien.

Uden at give nogen form for fejl har den genoptaget udførelsen af ​​koden, selvom der ikke er regneark "Sheet2" at vælge. Tryk nu på F8 igen.

Da der ikke var noget Ark1, kan det ikke indsætte værdien i A1-cellen som 500, men hvad den gør er at den vil indsætte værdien 500 til celle A1, uanset hvilket regneark der er aktivt. Mit aktive ark, når jeg udfører koden, var “Sheet3”, så værdien 100 indsættes i cellen A1.

Nu er den aktive kodelinje " On Error GoTo 0 ", ved at trykke på F8-tasten udføres denne linieopgave.

Since “On Error GoTo 0” is executed it has stopped the process of error handling and again starts to show errors if any occurs. Press the F8 key and see the error.

In the previous case without On Error GoTo 0, it has ignored this error as well, but since we have added error handler disabler it has started to show the error again.

Things to Remember here

  • Both On Error Resume Next and On Error GoTo 0 needs to be used as “Error Handler Enabler” and “Error Handler Disabler”.
  • Any line of codes between these two statements encounters an error it will be ignored.
  • If there is On Error GoTo 0 statement then after the exit of the subprocedure error handler will be disabled.