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

Indholdsfortegnelse

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 også, og vi har også teknikker til fejlhåndtering 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 i tandem for effektiviteten af ​​koden. For at håndtere fejlen skal vi starte med udsagnet "On Error Resume Next" og afslutte denne fejlhåndterer. Vi er nødt til at 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?

Se f.eks. 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 det først vælger regnearket med navnet "Ark1", og i celle A1 indsætter det 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 nedenstående ark i min projektmappe.

Der er ingen ark kaldet “Sheet1” & “Sheet2”. Når vi kører koden, støder den på en fejl som nedenfor.

Da der ikke er noget ark, der hedder “Sheet1”, er der stødt på en “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 interval ("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 i tilfælde af manglende tilgængelighed af regnearket "Sheet1", 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 skal vi bare ignorere fejlen for det første regneark, men for det andet ark og fremefter. Vi har brug for, at fejlen opstår, 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 trykker på F8-tasten en gang, springer kodeudførelse nu 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. Det ignoreres, indtil det 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. Denne linieopgave udføres.

Da “On Error GoTo 0” udføres, har det stoppet processen med fejlhåndtering og igen begynder at vise fejl, hvis der opstår nogen. Tryk på F8-tasten og se fejlen.

I det forrige tilfælde uden On Error GoTo 0 har det også ignoreret denne fejl, men da vi har tilføjet en deaktiver for fejlhåndtering, er den begyndt at vise fejlen igen.

Ting at huske her

  • Både On Error Resume Next og On Error GoTo 0 skal bruges som " Error Handler Enabler " og " Error Handler Disabler ."
  • Enhver linje med koder mellem disse to udsagn støder på en fejl, den ignoreres.
  • Hvis der er On Error GoTo 0-sætning, deaktiveres fejlhåndtereren efter afslutningen af ​​underproceduren.

Interessante artikler...