Excel VBA ob napaki Pojdi na 0
VBA On Error GoTo 0 je stavek upravljavca napak, ki se uporablja za onemogočanje omogočenega upravljalnika napak v postopku. Imenuje se kot "Disabler Handler Disabler".
Obravnavanje napak v katerem koli programskem jeziku je glavni razred, ki ga morajo razumeti vsi kodirniki. Tudi programski jezik VBA in v tem programskem jeziku imamo tudi tehnike za obravnavo napak. »On Error Resume Next« omogoča obdelavo napak, »On Error GoTo 0« pa onemogoči omogočen upravljalnik napak.
Oba »On Error Resume Next« in »On Error GoTo 0« sta para, ki ju je treba za učinkovito uporabo kode uporabiti skupaj. Za obvladovanje napak moramo začeti z izjavo “On Error Resume Next”, za zaključek tega obravnavalca napak pa moramo uporabiti izjavo “On Error GoTo 0”.
Vsaka vrstniška koda, napisana med temi izjavami, ne bo upoštevala kakršne koli napake v postopku.
Kako uporabiti izjavo On Error GoTo 0?
Tu lahko prenesete to predlogo VBA o napaki Goto 0 Excel - VBA o napaki Goto 0 Excel predlogoZa primer si oglejte spodnjo kodo.
Koda:
Sub On_ErrorExample1 () Delovni listi ("Sheet1"). Izberite obseg ("A1"). Vrednost = 100 delovnih listov ("Sheet2"). Izberite obseg ("A1"). Value = 100 End Sub
Zgornja koda najprej izbere delovni list z imenom »Sheet1« in v celico A1 vstavi vrednost 100.
Koda:
Delovni listi ("Sheet1"). Izberite obseg ("A1"). Vrednost = 100
Nato bo izbral delovni list z imenom »Sheet2« in vstavil isto vrednost.
Koda:
Delovni listi ("Sheet2"). Izberite obseg ("A1"). Vrednost = 100
Zdaj imam v delovnem zvezku spodnje liste.
Ni listov, imenovanih "Sheet1" in "Sheet2", ko zaženemo kodo, se bo pojavila napaka, kot je spodaj.
Ker ni lista z imenom »Sheet1«, je naletel na napako »Subscript out of range«. Za obvladovanje te napake bom na vrh makra dodal stavek o ravnanju z napakami »Ob nadaljevanju napake naprej«.
Koda:
Sub On_ErrorExample1 () Na napaki Nadaljuj naslednje delovne liste ("Sheet1"). Izberite obseg ("A1"). Vrednost = 100 delovnih listov ("Sheet2"). Izberite obseg ("A1"). Value = 100 End Sub
Zdaj zaženite kodo in poglejte, kaj se bo zgodilo.
Sporočil o napakah ne bo, ker je omogočen stavek upravljavca napak On Error Resume Next .
Predstavljajte si scenarij, v katerem moramo napako prezreti v primeru nedostopnosti delovnega lista »Sheet1«, vendar moramo obvestiti, če ni delovnega lista z imenom »Sheet2«.
Ker smo na vrhu dodali Nadaljuj z napako Naprej , je začel obravnavati napako, hkrati pa moramo določiti, za koliko vrstic moramo to napako prezreti.
V tem primeru moramo le prezreti napako na prvem delovnem listu, na drugem listu naprej pa moramo napako, če ni delovnega lista »Sheet2«. Torej po prvi kodi delovnega lista doda vrstico za onemogočanje napake On Error GoTo 0.
Koda:
Sub On_ErrorExample1 () Na napaki Nadaljuj naslednje delovne liste ("List1"). Izberite obseg ("A1"). Vrednost = 100 Napaka GoTo 0 Worksheets ("Sheet2"). Izberite obseg ("A1"). Value = 100 End Sub
Zdaj zaženite kodo vrstico za vrstico, da s pritiskom na tipko F8 vidite vpliv.
Zdaj, če enkrat pritisnete tipko F8, bo izvedba kode skočila na naslednjo vrstico in aktivna vrstica bo izvedena. Zdaj je aktivna vrstica (rumeno obarvana črta) "On Error Resume Next" (Obnavljanje napake naprej) in bo omogočena.
Zdaj, ko pride do kakršne koli napake, se bo prezrla, dokler ne zažene, da upravljavec napak onemogoči izjavo » On Error GoTo 0 «.
V prejšnjem poskusu smo naleteli na napake, vendar še enkrat pritisnite tipko F8 in si oglejte čarobnost.
Brez kakršne koli napake je nadaljeval izvajanje kode, čeprav ni izbranega delovnega lista »Sheet2«. Zdaj ponovno pritisnite F8.
Ker ni bilo lista1, v celico A1 ne more vstaviti vrednosti kot 500, vendar bo v celico A1 vstavil vrednost 500, ne glede na to, kateri delovni list je aktiven. Moj aktivni list, ko izvajam kodo, je bil "Sheet3", zato je vrednost 100 vstavljena v celico A1.
Zdaj je aktivna vrstica kode “ On Error GoTo 0 ”, s pritiskom na tipko F8 se bo ta vrstica opravila.
Ker se izvede »On Error GoTo 0«, je postopek obdelave napak ustavil in znova začne prikazovati napake, če do njih pride. Pritisnite tipko F8 in si oglejte napako.
V prejšnjem primeru brez vklopljene napake GoTo 0 je to napako tudi prezrl, a ker smo dodali onemogočevalnik obravnave napak, je napako začel ponovno prikazovati.
Tukaj si je treba zapomniti
- Tako On Error Resume Next kot On Error GoTo 0 morata biti uporabljena kot “ Omogočevalnik za obravnavo napak ” in “ Onemogočevalnik za obdelavo napak ”.
- Vsaka vrstica kod med tema dvema stavkoma naleti na napako in bo prezrta.
- Če obstaja stavek On Error GoTo 0, bo po izhodu iz obdelave napak podprocedura onemogočen.