Vrste pogrešaka u VBA za Excel - popis i primjeri

Korisnici će se često susresti s različitim vrstama pogrešaka u VBA-u. U nastavku nudimo nekoliko strategija za njihovo rješavanje i rješavanje. Proći ćemo kroz tehnike koje možete koristiti za ispitivanje koda tijekom testiranja, kao i metode hvatanja pogrešaka tijekom izvođenja.

Vrste pogrešaka u VBA za Excel

Testiranje i praćenje različitih vrsta pogrešaka u VBA kodu može biti dugotrajno i frustrirajuće. Nerijetko se može čuti programera Programiranje programiranje je postupak pisanja uputa za izvođenje računala. Sličan je receptu za ljude. Recept sadrži popis radnji koje kažu da se više od 30% svog vremena troši na testiranje.

S vremenom ćete postajati sve bolji u izbjegavanju pogrešaka, ali malo je vjerojatno da ćete ikada prvi put napisati savršeni kod. Učeći kako izbjegavati, rješavati i pratiti VBA pogreške, uštedjet ćete si puno vremena u budućnosti.

Vrste VBA pogrešaka

Da bismo olakšali stvari, vrste pogrešaka u kodiranju kategorizirali smo u tri skupine. Za svaku ćemo skupinu istražiti nekoliko primjera, a zatim razgovarati o tome kako biste ih mogli istražiti i riješiti.

1. Sintaksne pogreške - Određeni redak koda nije pravilno napisan

2. Pogreške pri kompajliranju - problemi koji se događaju pri sastavljanju redaka koda, iako izgleda da pojedini retci koda imaju smisla

3. Pogreške tijekom izvođenja - kada je kôd u principu u pravilu točan, ali radnja koju poduzme korisnik ili podaci koji se koriste dovode do neočekivanih pogrešaka.

Što su sintaksne pogreške?

Sintaksne pogreške VBA-in su način na koji vam kažu imaju li smisla vaš kôd, na najosnovnijim razinama. Možemo napraviti jednostavnu usporedbu s pravilima pisanja rečenice na engleskom:

  • Predmet je potrebno.
  • Potreban je glagol .
  • Kapital pismo potrebno je na početku.
  • Interpunkcija je potrebna na kraju.
  • Predmeti, pridjevi i ostale gramatičke značajke nisu obvezni.

Jane je pronašla 18 pogrešaka u svom VBA kodu .

Na sličan način VBA nameće određena pravila o onome što se traži u određenim situacijama. Na primjer, prilikom pokretanja osnovnog uvjetnog IF izraza u vašem kodu, morate ponoviti sljedeća pravila sintakse za prvi redak IF izraza;

  • Mora započeti s If
  • Sljedeći mora biti logički test , poput x> 10
  • Na kraju, ona mora završiti s riječi tada

Ako je NumberErrors> 20 tada

Ako prekršite gornja pravila engleskog ili VBA, vaša gramatika (engleski) ili sintaksa (VBA) smatra se netočnom.

Kako prepoznati sintaksnu pogrešku

Uređivač VBA označava sintaksne pogreške crvenom bojom, omogućujući vam lako prepoznavanje i rješavanje. Osim toga, ako pokušate pokrenuti svoj kôd ili pokrenuti novi redak, prikazat će vam se poruka o sintaksnoj pogrešci u nastavku.

Osnovna sintaksna pogreška:

Pogreška osnovne sintakse

Okvir poruke o pogrešci u sintaksi:

Okvir poruke o pogrešci sintakse

Da biste bili sigurni da se provjere odvijaju dok pišete, omogućite "Automatsku provjeru sintakse" u izborniku Opcije.

Automatska provjera sintakse

Kako riješiti sintaksne pogreške

Sintaksne pogreške predstavljaju pogreške u načinu pisanja određenog retka koda. Moraju se popraviti prije nego što možete pokrenuti svoj kôd. S iskustvom, crveni tekst bit će sve što trebate da biste uočili pogrešku. Ali ako ste i dalje zapeli, jednostavno potražite na mreži "if sintaksa izraza vba" ili koja varijacija odgovara vašim potrebama i pronaći ćete mnoštvo primjera određenog retka koji pokušavate napisati.

Što su pogreške u prevođenju?

Pogreške pri prevođenju odnose se na širu skupinu VBA pogrešaka, koje uključuju sintaksne pogreške. Pogreške pri kompiliranju također identificiraju probleme s vašim kodom kad se razmatraju kao cjelina. Sintaksa svakog pojedinog retka može biti točna, ali kad se slože, retci vašeg koda nemaju smisla. Pogreške u kompiliranju ističu se kada kompajlirate ili pokrenete svoj kôd.

Kako prepoznati pogrešku u prevođenju

Kada pokrenete svoj VBA kôd, pogreške pri kompajliranju prikazat će se u VBA dijaloškom okviru prema primjerima u nastavku.

Ako je vaš projekt dugačak ili složen i uključuje više rutina, može biti korisno sastaviti kod prije nego što ga pokrenete. Sprječava situacije u kojima se polovica koda uspješno izvodi, a zatim se pojavi pogreška. Možete sastaviti svoj VBA kôd klikom na Izbornik za uklanjanje pogrešaka → Sastavi VBA projekt.

Primjer 1

Pogreška kompajliranja za dio IF izraza koji nedostaje "Završi ako". Svaki pojedini redak u kodu je točan, ali zajedno ne predstavljaju potpunu izjavu IF.

Pogreška pri prevođenju - Primjer 1

Primjer 2

U ovom primjeru postupak kompajliranja VBA otkrio je sintaksnu pogrešku, označenu crvenom bojom. VBA označava da donjem kodu nedostaje zatvarajući zagrada na funkciji.

Pogreška pri prevođenju - Primjer 2

Primjer 3

Pogreške u prevođenju uobičajene su kada se koristi eksplicitna opcija i javljaju se kada varijabla nije izričito definirana. S aktiviranom Option Explicit, naredba Dim potrebna je za deklariranje svih varijabli prije nego što se mogu upotrijebiti u vašem kodu.

Pogreška pri prevođenju - Primjer 3

Kako riješiti pogreške u prevođenju

Pogreške kompajliranja VBA spriječit će pokretanje pogođenih rutina. Dok ih ne popravite, VBA ne može pravilno protumačiti vaš kôd. Okviri s porukama pogreške često pružaju korisnije savjete nego kod sintaksnih pogrešaka.

Ako vam nije odmah očito u čemu je problem iz poruke o pogrešci, pokušajte pomoću Microsoftovog centra za pomoć dobiti ideju o tome kako točno treba pisati vašu izjavu ili funkciju. Evo primjera poruke o pogrešci "Blokiraj ako bez kraja ako" na Microsoftovom web mjestu.

Blokiraj ako bez kraja ako

Što su runtime greške?

Nakon što ispravite sintaksne pogreške i pogreške prevedete, spremni ste započeti testiranje ili pravilno pokretanje koda kako biste vidjeli koliko dobro izvršava vaše željene radnje ili izračune. Razdoblje testiranja ili izvršenja koda uživo nazivamo "vrijeme izvođenja".

Runtime pogreške ne mogu se otkriti jednostavnim gledanjem koda; rezultat su interakcije vašeg koda sa određenim ulazima ili podacima u to vrijeme.

Pogreške u izvođenju često su uzrokovane neočekivanim prosljeđivanjem podataka VBA kodu, nepodudaranjem vrsta podataka, dijeljenjem neočekivanih nula i nedostupnošću definiranih raspona ćelija. Runtime greške također su najrazličitije i najsloženije za pronalaženje i ispravljanje.

Kako prepoznati runtime pogreške

VBA za otklanjanje pogrešaka VBA: Kako ispraviti kôd prilikom pisanja i pokretanja VBA koda, važno je da korisnik nauči kako ispraviti pogreške u kodu. Očekuje se korisnik Excela da funkcija koda označi šifru problema žutom bojom i da nam mali trag što uzrokuje problem.

Primjer 1

Iako donji kod jednostavno dijeli jedan broj s drugim, postoje slučajevi u kojima to neće biti moguće. Na primjer, ako je ćelija A1 = 2 i ćelija A2 = 0, nije moguće podijeliti s nulom. Okvir pogreške izvođenja uključuje gumb za otklanjanje pogrešaka, koji ističe kôd problema.

Runtime error - Primjer 1

Runtime pogreške - Primjer 1a

Primjer 2

U ovom sam primjeru stvorio niz za prikupljanje imena n tvrtki u svom radnom listu. Tada sam pokušao uputiti se na šestu stavku, koja može ili ne mora postojati u vrijeme izvođenja. VBA prikazuje poruku o pogrešci tijekom izvođenja i omogućuje mi da pritisnem Debug kako bih istražio problem.

Runtime error - Primjer 2

Jednom kad pritisnem Otklanjanje pogrešaka, VBA ističe liniju koda koja uzrokuje problem. Sada je na meni da upotrijebim poruku "Subscript out of range" kako bih utvrdio što ide po zlu. Pogreška indeksa izvan dosega općenito znači da je vaš kôd u načelu dobar, ali da određenu stavku koju tražite ne može pronaći. Najčešće će se to dogoditi prilikom referenciranja ćelija ili raspona u Excelu, kao i nizova u vašem VBA kodu.

Pogreška tijekom izvođenja - Primjer 2a

Da biste bili sigurni da je funkcija otklanjanja pogrešaka omogućena, u izborniku Opcije> Općenito> Otklanjanje pogrešaka, zadano stanje treba biti "Break on Unhandled Errors". Ostavite opciju označenom.

Prijelaz na neobrađene pogreške

Kako riješiti runtime pogreške

Budući da su pogreške izvršavanja različite i složene prirode, rješenja su također različita. Dvije su opće metode za smanjenje pogrešaka u izvođenju:

Trap pogrešaka

Dobro je razmisliti o mogućim scenarijima s kojima se vaš kod može susresti. Još je bolje testiranje koda na podacima iz prakse ili sa stvarnim korisnicima. Omogućit će vam prepoznavanje takvih scenarija u vašem VBA, s razgranavanjem koda na različite ishode, ovisno o tome postoje li pogreške.

Primjer 1

Ovdje redak 'On Error Resume Next' prisiljava kôd da nastavi, čak i ako se otkrije pogreška. Zatim koristimo test If Err> 0 za stvaranje poruke upozorenja, samo ako pogreška postoji. 'On Error Goto 0' vraća VBA na njegovo zadano stanje.

Hvatanje pogrešaka - Primjer 1

Primjer 2

Ovdje kod izračunava prihod po danu na temelju mjesečnog dohotka i definiranog broja dana. Ako broj dana nije naveden, preskačemo na definiranu točku u našem kodu nazvanu "NoDaysInMonthProvided :,", gdje kao osnovnu pretpostavku koristimo prosječni broj dana u mjesecu. Iako je pojednostavljen, jasno pokazuje kako zarobiti pogrešku i preskočiti na drugu točku koda.

Hvatanje pogrešaka - Primjer 2

Očistite korisničke upute

Jasne naljepnice dokumentacije i radnog lista osigurat će da vaši korisnici komuniciraju s vašim modelom na način koji ste namjeravali. Pomoći će im spriječiti ih prilikom unosa teksta, umjesto brojeva, ili ostavljanja nula koje bi kasnije mogle utjecati na vaš kôd.

Sažetak

Postoje tri ključne vrste pogrešaka u VBA-u koje mogu utjecati na vaš kôd na različite načine. Važno je aktivirati opcije otkrivanja pogrešaka VBA-a, poput programa za pronalaženje pogrešaka i automatske provjere sintakse. Pomoći će vam da utvrdite mjesto i prirodu pogrešaka.

Više resursa

Finance je službeni davatelj usluga globalnog certificiranog bankarskog i kreditnog analitičara (CBCA) ™ CBCA ™ certificiranje Akreditacija certificiranog bankarskog i kreditnog analitičara (CBCA) ™ globalni je standard za kreditne analitičare koji pokriva financije, računovodstvo, kreditnu analizu, analizu novčanog toka , modeliranje saveza, otplata zajma i još mnogo toga. program certificiranja, osmišljen kako bi pomogao svima da postanu financijski analitičari svjetske klase. Da biste nastavili napredovati u karijeri, bit će vam korisni dodatni resursi u nastavku:

  • #REF Excel pogreške #REF Excel pogreške #REF Excel pogreške uzrokuju velike probleme u proračunskim tablicama. U ovom brzom vodiču s primjerima i snimkama zaslona naučite kako pronaći i ispraviti pogreške #REF u programu Excel. # REF! pogreška ("ref" je referenca) je poruka koju Excel prikazuje kada se formula poziva na ćeliju koja više ne postoji, nastala brisanjem ćelija koje
  • Primjeri za Excel VBA Primjeri za Excel VBA Excel VBA Primjeri Excel VBA omogućuje korisniku izradu makronaredbi koje automatiziraju procese u programu Excel. Ovaj će vodič koristiti primjere Excela VBA kako bi pokazao kako snimati makronaredbu postavljanjem makronaredbe, kako deklarirati varijable i kako referencirati podatke.
  • Savjeti za pisanje VBA u Excelu Savjeti za pisanje VBA u Excelu Slijedi devet savjeta za pisanje VBA u Excelu. VBA za Excel uvodi nebrojene mogućnosti za prilagođene izračune i automatizaciju.
  • VBA metode VBA metode VBA metoda je dio koda pridružen VBA objektu, varijabli ili referenci podataka koji govori Excelu koju radnju treba izvršiti u odnosu na taj objekt. Kopiranje, lijepljenje i odabir samo su neki primjeri VBA metoda koje se mogu izvesti.