VBA dėl klaidos Goto 0 - Kaip naudoti „GoTo 0“ klaidoje „Excel VBA“?

„Excel VBA On Error Goto 0“

„VBA On Error GoTo 0“ yra klaidų tvarkymo priemonė, naudojama norint išjungti procedūroje įgalintą klaidų tvarkytuvą. Jis vadinamas „klaidų tvarkytuvo išjungikliu“.

Klaidų tvarkymas bet kuria programavimo kalba yra meistriškumo klasė, kurią turi suprasti visi koduotojai. VBA programavimo kalba taip pat, ir šioje programavimo kalboje taip pat yra klaidų tvarkymo būdų. „On Error Resume Next“ įgalina klaidų tvarkytuvą, o „On Error GoTo 0“ išjungs įgalintą klaidų tvarkytuvą.

Tiek „On Error Resume Next“, tiek „On On GoTo 0“ yra poros, kurias kodo efektyvumui reikia naudoti kartu. Norėdami pašalinti klaidą, turime pradėti nuo teiginio „On Error Resume Next“ ir nutraukti šį klaidų tvarkytuvą. Turime naudoti teiginį „On Error GoTo 0“.

Bet koks eilutės kodas, parašytas tarp šių teiginių, nepaisys bet kokios klaidos, įvykusios procese.

Kaip naudoti „On Error GoTo 0“ pareiškimą?

Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Kodas:

Sub On_ErrorExample1 () darbalapiai („Sheet1“). Pasirinkite diapazoną („A1“). Reikšmė = 100 darbalapių („Sheet2“). Pasirinkite diapazoną („A1“). Reikšmė = 100 End Sub

Tai, ką daro aukščiau pateiktas kodas, pirmiausia parinks darbalapį pavadinimu „Sheet1“, o langelyje A1 įterps vertę 100.

Kodas:

Darbalapiai („Sheet1“). Pasirinkite diapazoną („A1“). Reikšmė = 100

Tada jis pasirinks darbalapį pavadinimu „Sheet2“ ir įterps tą pačią vertę.

Kodas:

Darbalapiai („Sheet2“). Pasirinkite diapazoną („A1“). Reikšmė = 100

Dabar savo darbaknygėje turiu šiuos lapus.

Nėra lapų, vadinamų „Sheet1“ ir „Sheet2“. Kai vykdysime kodą, jis susidurs su tokia klaida kaip toliau.

Kadangi nėra nė vieno lapo, pavadinto „Sheet1“, jame įvyko klaida „Subscript out of range“. Norėdami pašalinti šią klaidą, makrokomandos viršuje pridėsiu klaidų tvarkytuvo teiginį „On Error Resume Next“.

Kodas:

Sub On_ErrorExample1 () On Error Atnaujinkite kitus darbalapius ("Sheet1"). Pasirinkite diapazoną ("A1"). Reikšmė = 100 darbalapių ("Sheet2"). Pasirinkite diapazoną ("A1"). Reikšmė = 100 End Sub

Dabar paleiskite kodą ir sužinokite, kas atsitiks.

Tai neteiks jokių klaidų pranešimų, nes įgalintas klaidų tvarkytuvo pranešimas „ On Error Resume Next “.

Įsivaizduokite scenarijų, kai turime nepaisyti klaidos, jei nėra darbalapio „Sheet1“, tačiau turime pranešti, jei nėra darbalapio, pavadinto „Sheet2“.

Kadangi viršuje pridėjome „ On Error Resume Next “, jis pradėjo tvarkyti klaidą, tačiau tuo pačiu metu turime nurodyti, kiek eilučių turime nepaisyti šios klaidos.

Šiame pavyzdyje mes tiesiog turime nepaisyti pirmojo darbalapio, bet antrojo lapo klaidos. Mums reikia klaidos, jei nėra darbalapio „Sheet2“. Taigi po to, kai pirmasis darbalapio kodas prideda klaidos išjungimo eilutę On Error GoTo 0.

Kodas:

Sub On_ErrorExample1 () On Error Atnaujinkite kitus darbalapius („Sheet1“). Pasirinkite diapazoną („A1“). Reikšmė = 100 On Error „GoTo 0“ darbalapiuose („Sheet2“). Pasirinkite Range („A1“). Reikšmė = 100 End Sub

Dabar paleiskite kodą eilutėje po eilutės, kad pamatytumėte poveikį paspausdami klavišą F8.

Dabar, paspaudus klavišą F8, kodo vykdymas pereis į kitą eilutę, ir bus vykdoma aktyvi eilutės užduotis. Dabar aktyvi eilutė (geltonos spalvos eilutė) yra „On Error Resume Next“ klaidų tvarkytuvas, ir klaidų tvarkyklė bus įgalinta.

Dabar įvyksta bet kokia klaida. Jis bus ignoruojamas, kol įvykdys klaidų tvarkytuvę, išjungs kodą „ On Error GoTo 0 “.

Ankstesnio bandymo metu susidūrėme su klaidomis, tačiau dar kartą paspauskite klavišą F8 ir pamatėme magiją.

Nepateikdamas jokios klaidos, jis atnaujino kodo vykdymą, net jei nėra pasirinkto darbalapio „Sheet2“. Dabar dar kartą paspauskite F8.

Kadangi nebuvo „Sheet1“, jis negali įterpti reikšmės į A1 langelį kaip 500, bet tai, ką jis daro, įterpia 500 reikšmę į langelį A1, atsižvelgiant į tai, kuris aktyvus darbalapis. Mano aktyvus lapas, kai vykdau kodą, buvo „Sheet3“, todėl 100 reikšmė įterpiama į langelį A1.

Dabar aktyvi kodo eilutė yra „ On Error GoTo 0 “, paspaudus klavišą F8. Ši eilutė bus vykdoma.

Vykdant „On Error GoTo 0“, jis sustabdė klaidų tvarkymo procesą ir vėl pradeda rodyti klaidas, jei tokių yra. Paspauskite klavišą F8 ir pamatykite klaidą.

Ankstesniu atveju be „On Error GoTo 0“, ji taip pat nepaisė šios klaidos, tačiau kadangi mes pridėjome klaidų tvarkytuvo išjungiklį, ji vėl pradėjo rodyti klaidą.

Ką čia reikia atsiminti

  • Tiek „On Error Resume Next“, tiek „On Error GoTo 0“ reikia naudoti kaip „ Error Handler Enabler “ ir „ Error Handler Disabler “.
  • Bet kurioje kodų eilutėje tarp šių dviejų sakinių yra klaida, į kurią nebus atsižvelgta.
  • Jei yra sakinys „On Error GoTo 0“, tada išėjus iš antrinio proceso klaidų tvarkytuvas bus išjungtas.

Įdomios straipsniai...