Upravljanje pogreškama u Excelu VBA

Rukovanje pogreškama vrlo je koristan i značajan mehanizam za programske jezike poput VBA. Kontrola ili sprečavanje pogreške aspekt je postupanja s pogreškama, što znači poduzimanje djelotvornih i značajnih mjera unutar VBA skripte kako bi se izbjegla pojava skočne poruke o pogrešci.

Različite vrste pogrešaka u VBA

  1. Pogreška sintakse ili pogreška razgledavanja
  2. Pogreška pri sastavljanju ili sastavljanju
  3. Runtime error
  4. Logička pogreška

Gore navedene pogreške mogu se otkloniti pomoću dolje navedenih pogrešaka i različitih 'On Error' izjava koje su umetnute između koda.

Nakon pogreške nastavite dalje

Error Goto 0

Na grešci Goto

Na pogrešci Goto -1

Upravljanje pogreškama VBA pomoću različitih izjava 'NA GREŠI'

Možete preuzeti ovaj VBA rukovanje pogreškama Excel predloška ovdje - VBA Pogreška Rukovanje Excel predloška

Primjer br. 1 - Pogreške VAP kompilacije

Kada u izjavi ili sintaksi VBA koda postoji pogreška, kad pogrešno unesete kod, on će biti označen crvenom bojom, ovisno o opcijama postavki u alatima (Ako ste odabrali Automatska provjera sintakse).

Pojavit će se prozor s porukom pogreške kompilacije kada pokrenete kôd s pogrešnom sintaksom.

Kodirati:

 Sub SYNTAX_ERROR () MsgBox ovo je moj prvi program Kraj Sub 

"KOMPILIRNA GREŠKA: VARIABLE NOT DEFINED" najčešća je pogreška koja se pojavljuje kao skočna poruka. kada referentna varijabla nije definirana, dolazi do ove pogreške.

Kodirati:

 Sub VBA_FORMAT1 () A = 19049, 83 A = Oblik (A, "STANDARD") MsgBox A Kraj Sub 

U gornjem primjeru, varijable tipa nisam deklarirao kao String, dolazi do ove pogreške. Dakle, trebam deklarirati varijablu kao Dim A kao niz.

Kodirati:

 Sub VBA_FORMAT1 () Dim A kao niz A = 19049, 83 A = Format (A, "STANDARD") MsgBox A Kraj Pod 

Primjer br. 2 - VBA Runtime error

Kada su u izjavi nemoguće matematičke izjave ili pojmovi, tada dolazi do ove greške izvršavanja.

Kodirati:

 Sub RUNTIME_1 () MsgBox 6/0 Kraj sub 

Primjer br. 3 - VBA logičke pogreške ili pogreške

Te je greške vrlo teško pratiti, niti će se istaknuti niti se pojaviti skočna poruka o pogrešci. rezultirat će neočekivanim radnjama i netočnim rezultatima.

Primjer: Kad su u varijabli prisutne dvije varijable, ona može sadržavati pogrešnu. U tom slučaju dolazi do logičke pogreške.

Kako spriječiti pogreške u VBA?

Provjerimo kako spriječiti gore navedene različite vrste pogrešaka u VBA Excelu.

Korak 1: Otvaranje prozora VB uređivača Odaberite ili kliknite Visual Basic u grupi Kod na kartici Programer ili možete izravno kliknuti na tipku prečaca Alt + F11 .

Korak 2: Da biste stvorili prazan modul, pod Microsoft excel objektima, desnom tipkom miša kliknite list 1 (VB_ERROR HANDLING) i Umetni modul tako da se stvori novi prazan modul.

Upravljanje pogreškama VBA s mogućnošću uklanjanja pogrešaka

Bolje je sastaviti kod prije nego što ga pokrenemo. Da biste slijedili sastavljanje, potrebno je slijediti sljedeće korake. U alatnoj traci izbornika VB, pod Opcijom uklanjanja pogrešaka, moramo odabrati sastaviti VBA projekt. Kada kliknete na njega, ona provjerava kôd korak po korak, nakon što pronađe pogrešku, ona će je istaknuti i pojavi se popup poruka, a na taj način je trebate ispraviti. Nakon što je ispravljena, morate je sastaviti da biste pronašli sljedeću pogrešku u kodu.

Napomena: Pomoću opcije sastavljanja možemo ispraviti pogrešku kompilacije i sintakse.

Upravljanje pogreškama VBA pomoću različitih izjava 'NA GREŠI'

1. O pogrešci Nastavite dalje

Ovdje će se pogreška zanemariti i kod će krenuti dalje.

U dolje spomenutom primjeru 6 se ne može podijeliti s nulom, ako ga pokrenete bez unošenja izjave On Error Resume Next, tada se pojavljuje ispod navedene greške izvođenja.

Kodirati:

 Sub RUNTIME_1 () MsgBox 6/0 Kraj sub 

Ako se na vrhu kôda nakon izjave Sub unese On Error Resume Next, zanemaruje se greška izvršavanja i prelazi na sljedeću izjavu, što rezultira rezultatom 6/2, tj. 3 (Popup box s rezultatom).

Kodirati:

 Sub RUNTIME_2 () Na pogrešci Nastavi Dalje MsgBox 6/0 MsgBox 6/2 Kraj Sub 

2. Na Error GoTo 0 i Error GoTo -1

'On Error GoTo 0' zaustavit će kôd na određenoj liniji koja uzrokuje pogrešku i prikazuje okvir s porukom koji opisuje ili označava pogrešku.

Kodirati:

 Sub onError_Go_to_0 () Na pogrešci GoTo 0 Ubij "C: TempFile.exe" raspon ("A1") Vrijednost = 100 / "PETER" Kraj Pod 

Obično prikazuje ponašanje provjere pogreške pogrešaka, značajno je kada se koristi zajedno s "Na pogrešci nastavi dalje".

Obično možete promatrati okvir Poruke o pogrešci tokom rada, sadrži opcije "Nastavi", "Kraj", "Otklanjanje pogrešaka" i "Pomoć" . hajde da provjerimo uporabu svakog od njih.

  • Opcija Nastavi ignorirat će iznimku i kôd će nastaviti ako je moguće.
  • Završna opcija prekida program.
  • Opcija za uklanjanje pogrešaka istaknut će iskaz tamo gdje je došlo do pogreške. što vam pomaže u uklanjanju pogrešaka ili ispravljanju koda.
  • Opcija pomoći odvest će vas da otvorite Microsoftovu stranicu pomoći MSDN.

On Error GoTo 0 s On Error Resume Next

Kodirati:

 Sub onError_Go_to_0_with_Resume_next () Na pogrešci Nastavi Sljedeće ubij "C: TempFile.exe" Na pogrešci GoTo 0 raspon ("A1") Vrijednost = 100 / "PETER" Kraj Sub 

U gornjem kôdu zanemarit će pogreške dok ne dođe do izjave o grešci GoTo 0. Nakon izjave o pogrešci GoTo 0, kôd se vraća ili nastavlja s uobičajenom provjerom pogreške i aktivira očekivanu grešku. kada pokrenem gornji kôd, prikazat će pogrešku podjele, tj. upisati neusklađenost (brojčana vrijednost se ne može podijeliti s tekstom).

On Error GoTo 0 onemogućuje bilo kakvo hvatanje grešaka koje je trenutno prisutno u VBA kodu, tj. Isključuje rukovanje pogreškama u glavnom kodu, dok On Error GoTo -1 briše postupanje s pogreškama i postavlja ga na ništa što vam pomaže ili omogućuje stvaranje nove zamke pogreške.

3. Na pogrešci GoTo <LABEL

VBA za prijenos programske kontrole na liniju nakon čega slijedi naljepnica ako se nađu pogreške u pokretu, tj. Kôd skoči na navedenu oznaku. Ovdje se izjave o kodu između retka iznimke i oznake neće izvršiti.

Ova je metoda prikladnija i značajnija za izlazak programa, ako se tijekom izvođenja pojave neka velika fatalna greška.

U dolje spomenutom VBA kodu čim se pogreška dogodi u retku 3, program prenosi kontrolu na liniju 6, tj. Oznaku (Popup poruka se pojavljuje kao "Rukovatelj izuzetaka" ).

Kodirati:

 Sub OnError_Go_to_Label () Na pogrešci GoTo Error_handler: MsgBox 9/0 MsgBox "Ovaj se redak neće izvršiti" Exit Sub Error_handler: MsgBox "handler iznimke" End Sub 

Ovdje možete primijetiti da 'Exit Sub' treba upotrijebiti neposredno prije oznake 'Error_handler:', to je učinjeno kako bi se osiguralo da se blok koda alata za upravljanje pogreškama zaustavi ili ne izvrši ako nema pogreške. Sada svoju radnu knjigu možete spremiti kao "radnu knjigu s makro omogućenim Excelom". Klikom na Spremi kao u lijevom kutu radnog lista.

Ako ponovo otvorite datoteku, možete kliknuti na tipku prečaca, tj. Fn + Alt + f8, pojavit će se dijaloški okvir "Makro" u kojem možete pokrenuti spremljeni makro kod po vašem izboru ili kliknite Fn + Alt + F11 za pun makro prozor.

Stvari koje treba zapamtiti

  • Prije nego što napišete kôd, morate osigurati da se prijelaz na neraspoređene pogreške provjeri ili odabere pogreška. opcija hvatanja općenito u mogućnostima alata na VBA alatnoj traci.
  • To je zadana postavka koja pomaže u zaustavljanju koda zbog pogrešaka koje se ne obrađuju.
  • Prekid na svim pogreškama: zaustavit će vaš kôd na svim vrstama pogrešaka.
  • Modul klase proboja: U slučaju da se u šifri koristi objekt poput korisničkog obrasca, to će istaknuti da je točna linija koja uzrokuje pogrešku.

Preporučeni članci

Ovo je vodič za rukovanje pogreškama VBA. Ovdje smo raspravljali o tome kako koristiti VBA rukovanje pogreškama u Excelu zajedno s nekoliko praktičnih primjera i preuzeti Excel predložak. Možete i pregledati naše druge predložene članke -

  1. VBA izjaviti niz (primjeri)
  2. VBA Greška
  3. VBA list bez zaštite
  4. Stupci VBA | Predlošci Excela
  5. VBA okružje

Kategorija: