Obdelava napak v Excelu VBA

Ravnanje z napakami je zelo uporaben in pomemben mehanizem za programske jezike, kot je VBA. Nadzor ali preprečevanje napak 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

Različne vrste napak v VBA

  1. Napaka sintakse ali napaka razčlenitve
  2. Napaka pri prevajanju ali kompilaciji
  3. Napaka med izvajanjem
  4. Logična napaka

Zgornje napake je mogoče odpraviti s pomočjo spodaj omenjenih napak in različnih izjav 'On Error', vstavljenih med kodo.

Ob napaki Nadaljujte naprej

Ob napaki Pojdi na 0

Ob napaki Goto

Ob napaki Pojdi -1

Odpravljanje napak VBA s pomočjo različnih izjav "NA NAPAJI"

To predlogo programa Excel za ravnanje z napakami lahko prenesete tukaj - VBA Napaka pri obdelavi predloge Excela

Primer 1 - Napake pri prevajanju VBA

Če pride do napake v stavku ali sintaksi kode VBA, ko napačno napačno vtipkate kodo, bo ta označena z rdečo barvo, odvisno od možnosti nastavitev v orodjih (Če ste izbrali samodejno preverjanje skladnje).

Ko zaženete kodo z napačno skladnjo, se prikaže pojavno okno s sporočilom o napaki prevajanja.

Koda:

 Sub SYNTAX_ERROR () MsgBox, to je moj prvi program End Sub 

"NAPAKA KOMPILIRANJA: RAZLIČNO NI OPREDELJENO" je najpogostejša napaka, ki se prikaže kot pojavno sporočilo. kadar referenčna spremenljivka ni definirana, pride do te napake.

Koda:

 Pod VBA_FORMAT1 () A = 19049, 83 A = Oblika (A, "STANDARD") MsgBox A End Sub 

V zgornjem primeru tipa spremenljivke nisem razglasil kot String, zato pride do te napake. Torej, spremenljivko moram razglasiti kot Dim A kot niz.

Koda:

 Pod VBA_FORMAT1 () Dim A kot niz A = 19049, 83 A = Oblika (A, "STANDARD") MsgBox A End Sub 

Primer # 2 - VBA Runtime Error

Ko so v izjavi nemogoče matematične izjave ali izrazi, pride do te napake med izvajanjem.

Koda:

 Sub RUNTIME_1 () MsgBox 6/0 Konec pod 

Primer # 3 - VBA logične napake ali napake

Te napake je zelo težko izslediti, nobene se ne bodo označile in se ne prikaže pojavno sporočilo o napaki. povzročilo bo nepričakovana dejanja in napačne rezultate.

Primer: Če sta v kodi prisotni dve spremenljivki, lahko vsebuje napačno. V tem primeru pride do logične napake.

Kako preprečiti napake v VBA?

Oglejmo si, kako preprečiti zgornje različne vrste napak v VBA Excel.

1. korak: Odpiranje okna urejevalnika VB Izberite ali kliknite Visual Basic v skupini Code na zavihku Developer ali lahko neposredno kliknete tipko za bližnjico Alt + F11 .

2. korak: Če želite ustvariti prazen modul, pod Microsoft excel predmeti, z desno miškino tipko kliknite list 1 (VB_ERROR HANDLING) in Vstavi modul, da se ustvari nov prazen modul.

VBA Napaka Rokovanje z možnostjo odpravljanja napak

Bolje je sestaviti kodo, preden jo zaženemo. Če želite slediti sestavljanju, morate upoštevati spodnje korake. V orodni vrstici meni VB, pod možnostjo Odpravljanje napak, moramo izbrati sestavljeni projekt VBA. Ko kliknete nanjo, preverite kodo korak za korakom, ko najde napako, jo bo poudaril in pojavil se bo pojavno sporočilo, s čimer ga morate popraviti. Ko ga popravite, morate sestaviti, če želite najti naslednjo napako v kodi.

Opomba: S pomočjo možnosti prevajanja lahko odpravimo samo napako prevajanja in sintakse.

Odpravljanje napak VBA s pomočjo različnih izjav "NA NAPAJI"

1. Ob napaki Nadaljujte Naprej

Tu bo napaka prezrta in koda 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 na strani kode po stavku Sub vnesen On Error Resume Next, se prezre napaka med izvajanjem in preide na naslednji stavek, kar ima za posledico 6/2, to je 3 (Popup box z rezultatom).

Koda:

 Sub RUNTIME_2 () Napaka Nadaljuj Naprej MsgBox 6/0 MsgBox 6/2 End Sub 

2. Pri napaki GoTo 0 in napaki GoTo -1

'On Error GoTo 0' ustavi kodo v določeni vrstici, ki povzroči napako, in prikaže polje s sporočilom, ki opisuje ali označi napako.

Koda:

 Sub onError_Go_to_0 () Ob napaki GoTo 0 Kill "C: TempFile.exe" Obseg ("A1") Vrednost = 100 / "PETER" End Sub 

Običajno prikazuje vedenje pri preverjanju napak, pri čemer je pomembno, če se uporablja skupaj z »Napaka nadaljuj naprej«.

Običajno lahko opazujete polje Sporočilo o napaki med izvajanjem, vsebuje možnosti »Nadaljuj«, »Konec«, »Odpravljanje težav« in »Pomoč« . poglejmo uporabo vsakega od njih.

  • Možnost Nadaljuj bo izvzela izjemo in nadaljevala kodo, če je mogoče.
  • Končna možnost prekine program.
  • Možnost za odpravljanje napak bo izpostavila stavek, kjer je prišlo do napake. ki vam pomaga odpraviti napako ali popraviti kodo.
  • Z možnostjo pomoči se bo odprla stran za pomoč Microsoft MSDN.

On Error GoTo 0 z On Error Nadaljuj naprej

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 

V zgornji kodi bo prezrl napake, dokler ne bo dosegel stavka Napaka 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. ko zaženem zgornjo kodo, bo prikazala napako delitve, tj. neusklajenost tipa (številske vrednosti ni mogoče deliti z besedilom).

On Error GoTo 0 onemogoči kakršno koli lovljenje napak, ki je trenutno prisotno v kodi VBA, tj. Izklopi obravnavo napak v glavni kodi, medtem ko On Error GoTo -1 odpravi ravnanje z napako in ga nastavi na nič, kar pomaga ali omogoča ustvarjanje druge napake.

3. Ob napaki GoTo <LABEL

VBA za prenos programskega nadzora v vrstico, ki ji sledi nalepka, če pride do napak v izvajanju, tj. Koda skoči na določeno oznako. Tu se izjave o kodah med vrstico izjem in oznako ne bodo izvajale.

Ta metoda je bolj primerna in pomembna za prijazen izhod iz programa, če se med izvajanjem pojavi kakšna večja usodna napaka.

V spodaj omenjeni kodi VBA takoj, ko se napaka pojavi v vrstici 3, program prenese nadzor na vrstico 6, tj. Nalepko (Popup sporočilo je prikazano kot "Izvajalec izjem" ).

Koda:

 Sub OnError_Go_to_Label () Ob napaki GoTo Error_handler: MsgBox 9/0 MsgBox "Ta vrstica se ne izvrši" Izhod iz napake napake_handler: MsgBox "izjema upravljavec izjem" End Sub 

Tu lahko opazite, da je treba 'Exit Sub' uporabiti tik pred oznako 'Error_handler:', to pa je zagotovljeno, da se blok kode orodja za obdelavo napak ustavi ali ne izvede, če ni napake. Zdaj lahko svoj delovni zvezek shranite kot "delovni zvezek z makro v Excelu". S klikom na shrani kot v levem kotu delovnega lista.

Če spet odprete datoteko, lahko kliknete tipko za bližnjico, tj. Fn + Alt + f8, prikaže se pogovorno okno »Makro«, kjer lahko zaženete shranjeno makro kodo po svoji izbiri ali pa kliknete Fn + Alt + F11 za polno makro okno.

Stvari, ki jih je treba zapomniti

  • Preden napišete kodo, morate zagotoviti, da je prekinitev neskladnih napak preverjena ali izbrana napačno. možnost lova pod splošnimi možnostmi orodja v orodni vrstici VBA.
  • Privzeta nastavitev pomaga preprečiti kodo zaradi napak, ki se ne obravnavajo.
  • Prekinitev vseh napak: ustavila bo kodo na vseh vrstah napak.
  • Modul razčlenitvenega razreda: Če se v kodi uporabi predmet, kot je uporabniški obrazec, bo poudaril, da natančna vrstica povzroča napako.

Priporočeni članki

To je vodnik za ravnanje z napakami VBA. Tukaj smo razpravljali o uporabi VBA ravnanja z napakami v Excelu skupaj z nekaj praktičnimi primeri in naloženo predlogo Excela. Ogledate si lahko tudi druge naše predlagane članke -

  1. VBA izjavite matriko (primeri)
  2. VBA o napaki
  3. VBA zaščitni list
  4. Stolpci VBA | Predloge Excela
  5. VBA Environment

Kategorija: