Excel VBA o napaki Nadaljujte naprej
Ravnanje z napakami je zelo uporaben in pomemben mehanizem za programske jezike, kot je VBA Nadzor ali preprečevanje napak, kar je vidik ravnanja z napakami, kar pomeni sprejemanje učinkovitih in pomembnih ukrepov znotraj skripta VBA, da se prepreči pojav pojavnih sporočil o napaki. Izjava Excel VBA On Error Resume Next Next zanemari kodno vrstico, ki povzroči napako in nadaljuje ali usmeri izvedbo v naslednjo vrstico po vrstici, ki je povzročila napako.
OPOMBA: Ob napaki Nadaljuj Naslednji stavek ne odpravi napak med izvajanjem, napaka ne upošteva, kje se bo izvedba programa VB nadaljevala iz vrstice, ki je povzročila napako izvajanja.V bistvu se nadaljevanje ob napaki naslednji uporabi, kadar želite prezreti napako in nadaljevati ali nadaljevati izvedbo kode v naslednjo celico.
Vrste napak v VBA
Spodaj so različne vrste napak v VBA:
- Napaka sintakse ali napaka razčlenitve.
- Napaka pri kompilaciji ali kompilaciji.
- Napaka med izvajanjem.
- Logična napaka.
Zgornje napake je mogoče odpraviti s pomočjo odpravljanja napak in izjav o napaki v kodi. Runtime Error je mogoče preprečiti s pomočjo On Error Resume Next.
Napaka med izvajanjem VBA:
Pred pojasnilom o napaki Nadaljuj naprej, se morate zavedati napake med izvajanjem, ko so v izjavi nemogoči matematični stavki ali izrazi, potem pride do te napake med izvajanjem.
Primeri programa Excel VBA o napaki Nadaljujte naprej
Spodaj so različni primeri nadaljevanja On Error Resume Next v Excelu VBA:
To različico predloge VBA on Error lahko nadaljujete tukaj, tukaj - VBA on Error Nadaljujte z naslednjo predlogo ExcelaVBA Ob napaki Nadaljujte naprej - Primer # 1
Tu bo napaka prezrta in izvedba kode se bo nadaljevala. V spodaj omenjenem primeru 6 ni mogoče razdeliti na nič, če ga zaženete, ne da bi vnesli stavek On Error Resume Next, potem pride pod omenjeno napako izvajanja.
Koda:
Sub RUNTIME_1 () MsgBox 6/0 Konec pod
Če je pri napaki nadaljuj Naprej, vnesena na vrhu kode po stavku SUB, zanemari napako med izvajanjem in preide na naslednji stavek, rezultat 6/2 (Popup sporočilo s rezultatom).
Koda:
Sub RUNTIME_2 () Napaka Nadaljuj Naprej MsgBox 6/0 MsgBox 6/2 End Sub
VBA Ob napaki Nadaljujte naprej - Primer # 2
Lahko uporabim On Error Resume Next kjerkoli v kodi od začetka do konca. V spodnjem primeru moram narediti izračun 3, tj
9/3 =?
9/0 =?
9/2 =?
V zgoraj navedenem primeru lahko opazite drugi izračun, pri katerem katerega koli števila ni mogoče razdeliti na nič, tj. 9 v drugem koraku ni mogoče razdeliti na nič. Recimo, če zaženete makro, ne da bi vnesli izjavo On Error Resume Next, zdaj lahko korak za korakom izvedem kodo s pomočjo koraka v ali ključa F8, da razumem, kako deluje.
Zdaj zaženem zgornjo kodo, tako da korak za korakom kliknem na korak Into možnost ali tipko F8. Samo kopiram zgornjo kodo in jo začnem izvajati korak za korakom, za prvi korak izračuna se prikaže okno 3.
Koda:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 Končni pod
Ko zaženem drugo vrstico kode, se spodaj omenjena napaka izvajanja pojavi na drugem koraku kode, kjer nobene številke ni mogoče razdeliti na nič, tj. 9 v drugem koraku ni mogoče deliti z ničlo.
Koda:
Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 Končni pod
Zdaj, če celo kliknem na odpravljanje napak, ne more nadaljevati naprej, kjer me bo popeljala do druge vrstice kode (označena je z rumeno barvo), kjer moram opraviti popravek. Torej, če še naprej kliknete možnost Step Into ali tipko F8, tretji izračun v tej kodi ne bo izveden.
Za odpravo ali odpravljanje te napake med izvajanjem moram uporabiti ali zagnati stavek OnError Resume Next nad drugo kodo ali na začetku kode pod podnaslovom. tako da bo preskočila to vrstico kode in prešla na tretji korak kode ter izračunala vrednost.
Koda:
Pod RUNTIME_30 () MsgBox 9/3 ob napaki Nadaljuj Naprej MsgBox 9/0 MsgBox 9/2 konec pod
ALI
Sub RUNTIME_31 () Napaka Nadaljuj Naprej MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub
Zdaj sem k kodi dodal naslednjo izjavo o napaki, kjer lahko uporabite katero koli od zgornjih kod, če jo zaženete korak za korakom, dobite pojavno okno z dvema sporočili, ena je izhodna prva koda in tretja koda izračun. Ob napaki Nadaljuj Naprej bo prezrl napako izvajanja v drugi kodi in prešel na tretjo kodo.
VBA Ob napaki Nadaljujte naprej - Primer # 2
Zdaj bomo videli kombinacijo nadaljevanja napake ob napaki Naprej z napako GoTo 0. V spodnji kodi bo ignoriral napake, dokler ne bo dosegel stavka On Error GoTo 0 . Po stavku On Error GoTo 0 se koda vrne nazaj ali nadaljuje na običajno preverjanje napak in sproži pričakovano napako.
Koda:
Pod onError_Go_to_0_with_Resume_next () Ob napaki Nadaljujte Next Kill "C: TempFile.exe" Napaka GoTo Obseg 0 ("A1") Vrednost = 100 / "PETER" End Sub
Ko zaženem zgornjo kodo, bo prikazala napako delitve, tj. Neujemanje tipa (numerične vrednosti ni mogoče deliti z besedilom).
Zdaj lahko svoj delovni zvezek shranite kot "delovni zvezek z makro v Excelu". S klikom na shrani kot v levem kotu delovnega lista.
ko znova odprete to Excelovo datoteko, lahko uporabite spodnjo tipko za bližnjico, tj
Funkcija + Alt + F11 tipka za bližnjico vam pomaga do dostopa do vseh ustvarjenih makro kod delovnega zvezka. Funkcija + Alt + F8 tipka za bližnjico vam pomaga odpreti pogovorno okno »Makro«, ki vsebuje vsa imena makra, kjer lahko zaženete določeno makro kodo po svoji izbiri.
Stvari, ki jih je treba zapomniti
- Napaka časa izvajanja bo tiho ujeta in shranjena v globalnem objektu Err
- Ob napaki Nadaljuj Naprej običajno prepreči prekinitev izvrševanja kode.
- Lastnosti predmeta napake (Err Object) se samodejno počistijo, ko se v rutini ravnanja z napakami uporabi Resume Next
Priporočeni članki
To je vodnik za VBA o napakah Nadaljuj naprej. Tukaj razpravljamo o različnih vrstah napak v VBA Excel, skupaj z nekaj praktičnimi primeri in naloženo predlogo Excela. Ogledate si lahko tudi druge naše predlagane članke -
- Celoten vodnik za makro VBA
- VBA DateDiff (primeri s predlogo Excel)
- Kako uporabiti iskanje cilja v VBA?
- Zaščitni list VBA s sintakso
- VBA Environment