Kazalo
V programu Microsoft Excel VBA je ravnanje z napakami ena od ključnih nalog. Če ste programer, veste, kako pomembno je ravnanje z napakami za izdelavo popolne aplikacije. Vsaka napaka v izjavi lahko na veliko načinov ovira vašo kodo VBA. Zato morate biti previdni pri obravnavanju teh napak med izvajanjem kode VBA. Med uporabo kode VBA v programu Excel se lahko srečate z veliko napakami med izvajanjem.enega od njih, uporabimo Ob napaki Nadaljuj naslednji izjava.
V tem učbeniku se boste naučili uporabljati Ob napaki Nadaljuj naslednji Ta vadnica bo na mestu z ustreznimi primeri in primernimi ilustracijami. Zato ostanite z nami.
Prenesi delovni zvezek za prakso
VBA Ob napaki nadaljujte z naslednjim.xlsm
Obravnava napak v programu Excel VBA
Pri delu z Microsoft Excel VBA se boste v podprocesu srečali s številnimi napakami. Kadar VBA ne more izvesti izjave, vrže napako v času izvajanja.
Excel samodejno obravnava te napake, zato ob pojavu napake med izvajanjem prikaže privzeto sporočilo o napaki, kot je naslednje:
Zdaj jih lahko različno obravnavate z nekaterimi stavki VBA. O njih bom govoril v poznejših razdelkih.
Preberite več: Kako odpraviti napako #REF! v Excelu (6 rešitev)
O izjavah o napakah v programu VBA
Za ravnanje z napakami med izvajanjem damo Excelu navodila z izjavo On Error (Ob napaki). Ta odloči, katere vrste operacij želimo takoj izvesti v nadaljevanju. V bistvu s temi vrstami ravnanja z napakami onemogočimo te napake.
V programu Excel VBA uporabljamo tri vrste stavkov On Error (sintaksa).
- Ob napaki Pojdi na vrstica
- Ob napaki Nadaljuj naslednji
- Ob napaki Pojdi na 0
Ko odkrijete napako, uporabite ukaz On Error. Ker če ne uporabite ukaza Ob napaki te napake med izvajanjem bodo katastrofalne. Prikazal bo sporočilo o napaki in ustavil izvajanje.
Ko uporabljamo Ob napaki vklopimo "aktivni" upravljalnik napak. "Aktivni" upravljalnik napak je omogočen upravljalnik, ki začne operacijo upravljanja napak. Če se pojavi napaka, medtem ko je vključen upravljalnik napak, upravljalnik napak trenutne metode ne more prenesti napake. Po tem se nadzor vrne k klicnemu postopku.
Če ima kličoči postopek omogočen upravljalnik napak, se ta sproži za upravljanje napake. Če je ustrezno vključen upravljalnik napak kličočega sistema, se nadzor vrne prek prejšnjih kličočih postopkov, dokler ne najde omogočenega, vendar neaktivnega upravljalnika napak. Če ne najde nobenega neaktivnega omogočenega upravljalnika napak, to pomeni, da je napaka na mestu nastanka katastrofalna.
Vsakič, ko izvajalec napak vrne pooblastila kličočemu postopku, ta postopek razvije obstoječi postopek. Izvajanje se ponovno začne v trenutnem postopku v trenutku, ki ga izbere izvajalec napak. Življenjepis ko program za obdelavo napak obravnava napake v katerem koli postopku.
'Ob napaki nadaljujte z naslednjim' v VBA
Zdaj je Ob napaki Nadaljuj naslednji Izjava sporoča programu VBA, naj ne upošteva vrstic kode z napakami in takoj nadaljuje z naslednjo vrstico kode. Po tem bodo kode Excel VBA preskočile vrstico ali vrstice, ki vsebujejo napake, in nadaljevale z naslednjim zaporedjem kode.
Spletna stran Ob napaki Nadaljuj naslednji Ta izjava omogoča, da se izvajanje preskoči tudi v primeru napake pri izvajanju. Če menite, da lahko določena vrstica kode povzroči napako, postavite rutino za odpravljanje napak tja, namesto da bi jo postavili na drugo mesto v postopku. Ob napaki Nadaljuj naslednji postane neaktivna, ko vaša koda pokliče drugo proceduro. Ko torej v tej proceduri potrebujete usklajeno obravnavo napak, morate zagnati ukaz Ob napaki Nadaljuj naslednji v vsakem poimenovanem vzorcu.
To je smiselno, kadar vrstica kode, ki jo lahko preskočite, ni potrebna za uspešno delovanje makra. Vendar ne pozabite, da je lahko škodljiva, če jo uporabite nepravilno, saj lahko prinese neželene rezultate.
Ne pozabite:
Izjava On Error Resume Next ne odpravlja napak v času izvajanja. V bistvu ne upošteva napak, pri katerih se izvajanje VB nadaljuje od izjave, ki je povzročila napako v času izvajanja.
Oglejte si naslednjo kodo:
Sub divide() MsgBox 5 / 0 MsgBox 5 / 2 End Sub
Poskusili smo deliti 5 z 0 in 1. Izvedimo kodo. Pokazal se bo naslednji rezultat:
To povzroči napako med izvajanjem. Številke ne moremo deliti z 0. Ko odpravite napake v kodi, boste videli naslednje:
Ko program VB najde napako, takoj ustavi postopek. Naslednje vrstice ne izvede.
Zdaj implementirajmo Ob napaki Nadaljuj naslednji pred izjavo o napaki:
Sub divide() On Error Resume Next MsgBox 5 / 0 MsgBox 5 / 2 End Sub
Po zagonu kode boste videli naslednje:
Kot lahko vidite, VBA ne upošteva vrstice, v kateri je prišlo do napake, in takoj nadaljuje z naslednjo vrstico kode. Na ta način lahko uporabite Ob napaki Nadaljuj naslednji za odpravo napake v programu Excel VBA.
Primeri stavka 'Ob napaki nadaljuj naslednji' v VBA
V naslednjih razdelkih vam bom predstavil dva primera Ob napaki Nadaljuj naslednji izjave, ki jih lahko vnesete v delovni list Excel z uporabo VBA. Priporočam, da se vse to naučite in uporabite v svojem delovnem zvezku. To bo zagotovo povečalo vaše znanje o Excelu.
1. Izjava "Ob napaki nadaljujte z naslednjim" za skrivanje delovnih listov
V tem primeru vam bom pokazal kodo VBA, ki bo skrivala vse delovne liste aktivnega delovnega zvezka.
Oglejte si naslednjo sliko zaslona:
Tu imamo štiri delovne liste. Vse bomo skrili z naslednjo kodo VBA:
Sub hide_all_sheets() Dim copies As Worksheet For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub
Ko izvedete naslednjo kodo, se prikaže naslednja napaka med izvajanjem:
Excel prikaže to napako, ker ne morete skriti vseh listov v delovnem zvezku. Zato morate napako prezreti. To storite tako, da v vrstici kode uporabite stavek On Error Resume Next.
Sub hide_all_sheets() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub
Po končanem izvajanju kode VBA se prikaže naslednji rezultat:
Na koncu po izvedbi ne boste videli nobenih napak. Torej je naša izjava On Error Resume Next v kodi VBA delovala zelo dobro.
Preberite več: Napake v programu Excel in njihov pomen (15 različnih napak)
2. Funkcija VLOOKUP s funkcijo 'Ob napaki nadaljuj naprej' v VBA
V tem primeru bom prikazal primer funkcija VLOOKUP v VBA Ta koda VBA vključuje tudi Ob napaki Nadaljuj naslednji izjava.
Oglejte si naslednjo sliko zaslona:
Tukaj lahko vidite imena nekaterih ljudi in njihovo starost. V sosednji tabeli bomo uporabili VLOOKUP poiščite ime in starost osebe.
Za to vnesite naslednjo kodo:
Sub VLOOKUP_Function() Dim i As Long For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub
Sedaj zaženite makro in videli boste naslednjo napako:
To je napaka med izvajanjem. Zakaj se to zgodi? Še enkrat si oglejte nabor podatkov:
Kot lahko vidite, ni podatkov za "Aaron" in "Emma". Zato se izvede le VLOOKUP za prvi vnos. Nato se izvajanje ustavi. Če želite ignorirati napako in nadaljevati z iskanjem preostalih starosti, uporabite ukaz Ob napaki Nadaljuj naslednji izjava.
Sub VLOOKUP_Function() Dim i As Long On Error Resume Next For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub
Po zagonu kode VBA se prikaže naslednji rezultat:
Kot lahko vidite, z uporabo Ob napaki Nadaljuj naslednji ukaza, smo ignorirali napako in poiskali preostale starosti oseb. Naša koda VBA ni našla nobenih podatkov o Aaronu in Emmi. Zato je ignorirala ti vrednosti in vrnila preostale vrednosti v delovnem listu Excel.
Preberi več: [Popravljeno] Excel je našel težavo z enim ali več sklicevanji na formulo v tem delovnem listu
Izklopite možnost "Ob napaki nadaljujte z naslednjim" z Excelovim programom VBA
Morda se boste znašli v situaciji, ko boste želeli ignorirati napake za določen segment kode VBA. Ne pozabite, da če v kodi VBA uporabite stavek On Error Resume Next, bodo preskočene vse naslednje napake. Če želite to izklopiti in omogočiti obravnavo napak za drug segment, uporabite Ob napaki Pojdi na 0 . To bo ponovno omogočilo obdelavo napak.
Splošna uporaba:
Sub error_handling()
Ignoriranje napak
Ob napaki Nadaljuj naslednji
// vrstice kode
Vključitev obdelave napak
Ob napaki Pojdi na 0
//vrstice kod
Konec podizdelka
Oglejte si naslednjo kodo VBA:
Sub error_handling() Dim i As Long 'za ignoriranje napake Ob napaki Nadaljuj Naslednji For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Naslednji i 'za izklop ob napaki Nadaljuj naslednji Ob napaki Pojdi na 0 MsgBox i / 0 End Sub
Uporabili smo kodo, ki smo jo prej uporabili za VLOOKUP Tukaj je dodan dodaten del kode, da vam pokažemo. Naša koda ne bo upoštevala napak med izvajanjem funkcije VLOOKUP vendar bo aktiviral obravnavo napak po tem, ko bo Ob napaki Pojdi na 0 izjava.
Preberite več: Excel VBA: Izklopite možnost "Ob napaki nadaljujte z naslednjim"
VBA 'Ob napaki pojdi na cilj'
Pred tem sem obravnaval ravnanje z napakami z metodo On Error. Naš celoten članek je bil posvečen Ob napaki nadaljujte z naslednjim. V naslednjih razdelkih bom obravnaval tudi dve vrsti obravnavanja napak.
1. VBA Ob napaki Pojdi na 0
Spletna stran Ob napaki Goto 0 je vgrajena nastavitev programa Excel, če vaše kode nimajo programa za odpravljanje napak. V bistvu pomeni, da ko program VBA najde napako z Ob napaki Pojdi na 0 , bo ustavil izvajanje kode in prikazal tradicionalno okno s sporočilom o napaki.
Ob napaki Pojdi na 0 Izjava v bistvu izklopi obravnavo napak v tem postopku. Vrstice 0 ne določi kot začetek kode za obravnavo napak, tudi če metoda vsebuje vrstico s številko 0.
Oglejte si naslednjo kodo:
Sub on_error_goto_0() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo 0 ActiveSheet.Name = "Copy-4" End Sub
To kodo smo vam že pokazali. Ta koda v bistvu skrije vse delovne liste v trenutnem delovnem zvezku. Zdaj imam res dodaten del kode z Ob napaki Pojdi na 0 za prikaz napake. Če zaženete kodo, boste videli naslednje:
Ta napaka se pokaže, ker v aktivnem delovnem zvezku ne moremo imeti listov z istim imenom.
2. VBA Ob napaki Pojdi v vrstico
Excelu lahko tudi naročite, naj zažene drug segment kode, če najde kakšno napako, in sicer z uporabo Ob napaki Pojdi v vrstico . Excelu pove, naj po ugotovitvi napake nekaj izvede.
Argument vrstica je katerakoli oznaka vrstice ali številka vrstice. Če naša koda povzroči kakršno koli napako med izvajanjem, se bo premaknila v vrstico, kar bo povzročilo, da bo pri izvajanju aktivna obdelava napake. Ne pozabite, da mora biti vaša opredeljena vrstica v točno tistem postopku, v katerem je izjava On Error, sicer bo povzročila napako pri sestavljanju.
Oglejte si naslednjo kodo:
Sub on_error_goto_line() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo error_handler ActiveSheet.Name = "Copy-4" Exit Sub error_handler: MsgBox "Obstaja tudi list z enakim imenom. Poskusite z drugim." End Sub
Kodo ste videli v prejšnjem primeru. Ko smo uporabili Ob napaki Pojdi na 0 , je povzročil napako. Vendar smo ga nadomestili z ukazom Ob napaki Pojdi v vrstico izjava.
Zdaj zaženite kodo in videli boste naslednje:
Kot lahko vidite, nam ne prikaže standardnega pogovornega okna za napake. Namesto tega nam prikaže okno s sporočilom po meri, ki smo ga ustvarili v error_handler ko Excel najde kakršno koli napako, preskoči na segment error_handler segment in nam prikaže okno za sporočila.
Uporabili smo tudi Izhodni podsklop v postopku. Če ni lista z imenom " VLOOKUP ", bo naša koda VBA preimenovala aktivni list. Nato moramo tukaj končati izvajanje, saj nam ni treba nadaljevati z izvajalcem napak in prikazati okenca s sporočilom.
VBA 'Ob napaki' ne deluje v programu Excel
Včasih metoda On Error ne deluje, ne glede na to, kako zelo se trudite. Ob napaki metoda za odpravljanje napak. Vendar se včasih napake prikažejo, tudi če uporabite Ob napaki Nadaljuj naslednji ali Ob napaki Pojdi na 0 . V kodi je lahko več razlogov, ki jih morate odpraviti. Tega vam ne bom pokazal.
Osnovni razlog za uporabo VBA ' Ob napaki' Ne deluje v Excelu je vklop možnosti "Prekinitev ob vseh napakah" v Excelu.
To lahko rešite z naslednjimi koraki:
📌 Koraki
- Najprej pritisnite Alt+F11 na tipkovnici, da odprete urejevalnik VBA.
- Zdaj kliknite na Orodja> Možnosti.
- Nato kliknite na Splošno v zavihku Možnosti pogovorno okno.
- Tukaj lahko vidite, " Prekinitev pri vseh napakah " je že preverjen. V bistvu vam preprečuje, da bi obravnavali napake.
- Če ga želite spremeniti, izberite možnost " Prekinitev ob neobdelanih napakah " in kliknite na V REDU .
Upam, da bo odpravil vašo težavo VBA "Ob napaki", ki ne deluje v Excelu.
Preberite več: Razlogi in popravki napake NAME v Excelu (10 primerov)
💬 Stvari, ki si jih je treba zapomniti
✎ Ob napaki Nadaljuj naslednji ne odpravi napak. V bistvu napake ne upošteva in nadaljuje z naslednjo izjavo.
✎ Excel ujame in shrani napake med izvajanjem v predmetu Err. Ko uporabimo Ob napaki Nadaljuj naslednji izbriše lastnosti objekta Err.
✎ Izklopite lahko Ob napaki Nadaljuj naslednji v svoji kodi VBA v Excelu tako, da dodate Ob napaki Pojdi na 0 izjava.
Zaključek
Za konec upam, da vam je to vodilo zagotovilo delček uporabnega znanja za uporabo Ob napaki Nadaljuj naslednji v programu Excel VBA. Priporočam, da se naučite vseh teh navodil in jih uporabite za svoj nabor podatkov. Prenesite vadbeni delovni zvezek in jih preizkusite sami. Prav tako lahko podate povratne informacije v razdelku s komentarji. Vaše dragocene povratne informacije nas motivirajo za ustvarjanje takšnih učbenikov.
Ne pozabite preveriti naše spletne strani Exceldemy.com za različne težave in rešitve, povezane z Excelom.
Še naprej se učite novih metod in rastite!