Debugging okruženje programskog jezika VBA dopušta programerima da trenutno suspenduju izvršavanje VBA kôda tako da naredno ispravljanje greške može biti urađeno:
- Proverom vrednosti promenljive u tekućm stanju.
- Unošenjem VBA kôda u Immediate prozor radi razmatranja ishoda.
- Izvršavanjem svakog reda programa pojedinačno zaredom.
- Kontinualnim izvršenje kôda.
- Zaustavljanjem izvršenja kôda.
Ovo su samo neki poslovi koje možete da izvršite u VBA debugging okruženju.
Šta je tačka prekida (Breakpoint)?
Tačka prekida je ona linija kôda koja kad je dostignuta zaustavlja vaš program momentalno. Kad ga jednom zaustavlte, u mogućnosti ste da koristite debugging okruženje da razmotrite status vašeg programa, postupkom korak po korak linije kôda, produžavanjem izvršenja kôda, ili njegovim zaustavljanjem.
Možete da kreirate više tačaka prekida u vašem programu ukoliko želite. Tačke prekida su naročito korisne kad želite da prekinete vaš program tamo gde sumnjate da problem ili greška postojii.
Podešavanje tačke prekida
Pogledajte kako namestiti tačku prekida. Prvo, treba da pristupite VBA okruženju. Najbrži način za to je da pritisnete Alt-F11 dok je vaša Access baza otvorena. Potom namestite tačku prekida, nalazeći liniju kôda gde bi ste hteli da obustavite izvršavanje vašeg programa. Levi klik u sivu traku levo od kôda. Crvena (braon) tačka treba da se pojavi i red da bude inverzno ispisan crveno.
U sledećem primeru, imamo napravljenu tačku prekida u narednom redu programa:
If IsNull(cboKeyword) = True Then
Uklanjanje tačke prekida
Za uklanjanje tačke prekida, levi klik na crvenu tačku linije kôda koja ima tačku prekida.
U ovom primeru, mi želimo da uklonimo tačku prekida u narednoj liniji koda:
If IsNull(cboKeyword) = True Then
Sada je tačka prekida obrisana i linija kôda bi trebala da ponovo izgleda normalno.
Uklanjanje svih tačaka prekida
Budući da možete da namestite više tačaka prekida, možete i da uštedite vreme brisanjem svih tačaka prekida u vašem VBA kôdu odjednom.
Za uklanjanje svih tačaka prekida, selektujte „Clear All Breakpoints“ niže u Debug meniju.
/>
Poželećete da uklonite sve tačke prekida iz vašeg VBA kôda, samo ako ne morate da ih pojedinačno uklanjate, jednu po jednu. Sad kad znamo kao da postavimo i uklonimo tačke prekida, biće olakšano otklanjanje grešaka u VBA programskom kôdu. U našem primeru, mi imamo postavljenu tačku prekida i izvršni VBA kôd pokrenut komandnim dugmetom koje se zove cmdRunReport.
Kad je tačka prekida dostignuta, Access će da prikaže Microsoft Visual Basic prozor i istakne liniju (u žutom) gde je kôda bio zaustavljen.
Provera vrednosti
Ako želite da vidite vrednost promenljive ili objekta (ie: text box, combo box, etc) u vašem VBA kôdu u vreme kad je program bio obustavljen, možete pokretati pokazivač vašeg miša iznad VBA kôda. U mehuru teksta će se pojaviti naziv promenljive/objekta i njegova vrednost u aktuelnom stanju.
U ovom primeru, mi imamo kretanje pokazivača miša iznad combo box-a pod nazivom cboKeyword. Mehur teksta pokazuje naziv combo box-a i vrednost „monitor“. Ova osobina vam je korisna ako treba da proverite prommenljivu/objekat u vašem kôdu.
Upotreba prozora Immediate
Immediate prozor može biti upotrebljen za otklanjanje grešaka u vašem programu pri dozvoli izvršenja VBA kôda u kontekstu prekida programa. Immediate prozor nam pruža najveću pomoć kad nam treba da pronađemo vrednost promenljive, izraza, ili objekta oko neke izvesene tačke u programu. Na primer, ako želite da proverite vrednost combo box-a pod nazivom cboKeyword, mogli ste da koristite print komandu na ovaj način:
U ovom primeru, mi kucamo print cboKeyword i pritiskamo ENTER. Immediate prozor prikazuje rezultat u sledećoj liniji. U ovom slučaju, print cboKeyword vraća monitor. Takođe možete da kucate složenije izraze u Immediate prozoru. ( Ne zaboravite da pritisnete ENTER.) Na primer:
Imediate prozor može biti koristan za izvršavanje drugih odlika VBA koda, ali ipak imajte na umu da Immediate prozor može biti korišćen samo u svrhu pronalaženja grešaka u programskom kodu.
Na primer, Immediate prozor, može biti korišćen za otvaranje izveštaja pod nazivom rptEntries.
Izaberite kako da se krećete kroz vaš kod
Obzirom na činjenicu da ste suspendovali izvršenje vašeg programa u režimu ispravljanja grešaka, i treba da izaberete kako da nastavite kroz vaš kôd imaćete 4 izbora.
- Korak unutar („Step Into“)
- Korak iznad (“Step Over“)
- Korak izvan (“Step Out”)
- Nastavak (“Continue”)
- Zaustavljanje (“Halt”)
Dopušteno je uzeti bilo koji.
1. Korak unutar (Step Into)
Ovo je takav način gde ćete stupati kroz svaki red programskog koda u bilo kojoj proceduri koja je pozvana od tekuće procedure. Ako naredba tekuće procedure poziva neku drugu proceduru, VBA prelazi na naredbe pozvane procedure. Kada se pozvana procedura završi, VBA se vraća na sledeću naredbu u tekućoj proceduri. Ovo možete izvršiti bilo pritiskom na taster F8 ili selektovanjem „Step Into“ na slici ispod u Debug meniju.
Svaki put selektujete „Step Into“, u želji da pređete na sledeći red koda.
2. Korak iznad (Step Over)
Ponekad treba proći kroz naredbe procedure, ali pri tom ne treba prolaziti kroz naredbe pozvane procedure. Ako koristite komandu Step Over i tekuća naredba poziva drugu proceduru, VBA izvršava pozvanu proceduru u jednom koraku, a zatim prelazi na sledeću naredbu u tekućoj proceduri.
U tom slučaju prozor Module nastavlja da prikazuje tekuću proceduru i dok se pozvana procedure izvršava. Ovo možete izvršiti bilo pritiskom na Shift-F8 ili izborom „Step Over“ na slici ispod u Debug meniju. Ujedno, to je najčešće korišćena opcija pri otklanjanju grešaka u procedurama.
Svaki put selektujte “Step Over”, želeći kretanje u naredni red kôda vaše tekuće procedure. Ako vaša tekuća procedure zove drugu proceduru, dibager će ići korak iznad pozvane procedure. Neće prolaziti dole u kod od pozvane procedure.
3. Korak izvan (Step Out)
Kada koristite komandu Step Out, a tekuća procedure je pozvana iz neke druge procedure, VBA u jednom koraku izvršava ostatak tekuće procedure i svih ugnježđenih procedura koje ona poziva, a zatim se vraća u pozivajuću proceduru i zaustavlja se. Ako se tekuća procedura ne poziva iz neke druge procedure, komanda Step Out je identična komandi Continue. Da bi ste koristili komandu Step Out izaberite je u Debug meniju ili pritisnite Ctrl+Shift+F8.
4. Nastaviti (Continue)
Vi možete izabrati da „Nastavite“ izvršavanje vašeg kôda. Ovo je takav način gde vaš prekinuti program nastavlja izvršenje. Sa ovom opcijom, vaš program obezbeđuje ili izvršenje do kraja ili do sledeće tačke prekida. Ovo možete izvršiti bilo pritiskom na F5 ili izborom „Continue“ na slici ispod u Run meniju.
5. Zaustavljanje (Halt)
Na posletku, možete da odaberete zaustavljanje izvršenja vašeg koda. Na ovaj način vaš suspendovan program biće zaustavljen u izvršavanju. Vi više nećete biti u Debug modu za ispravljanje grešaka.
Ovo možete izvršiti biranjem „Reset“ na donjoj slici u Run meniju.
Posle identifikovane greške u vašem kodu vi imate normalno selektovanu ovu opciju. Čim je vaš kod zaustavljen, možete da ga modifikujete i ispravite. Često je korisno prilikom testiranja kôda postaviti više tačaka prekida u okviru jedne procedure. Tako ćete odjednom izvršavati delove kôda, umesto da prolazite kroz proceduru liniju po liniju.
Priredio: Miroljub Zahorjanski