Morda boste naleteli na nekaj težav s kodo VBA, toda kako najdete težavo? Včasih bo vaša koda VBA morda potrebovala nekaj razhroščevanja. Nadaljujte z branjem, če želite odkriti štiri najpogostejše metode za odpravljanje napak kode Excel VBA:
-
Pregledovanje kode
-
Vstavljanje funkcij MsgBox na različna mesta v vašo kodo
-
Vstavljanje stavkov Debug.Print
-
Uporaba Excelovih vgrajenih orodij za odpravljanje napak
Preverjanje vaše kode
Morda je najbolj preprosta tehnika odpravljanja napak preprosto pozoren pogled na vašo kodo in ugotoviti, ali lahko najdete težavo. Ta metoda seveda zahteva znanje in izkušnje. Z drugimi besedami, vedeti morate, kaj počnete. Če imaš srečo, napaka takoj izskoči, udariš se po čelu in rečeš: "D'oh!" Ko se bolečina v čelu zmanjša, lahko odpravite težavo.
Bodite pozorni na uporabo besed: "Če imaš srečo." To je zato, ker pogosto odkrijete napake, ko delate na svojem programu osem ur zapored, ura je 2 zjutraj, in delate s kofeinom in voljo. V takih trenutkih imate srečo, če lahko celo vidite svojo kodo, kaj šele, da bi našli hrošče. Zato ne bodite presenečeni, če preprosto preučitev vaše kode ne bo dovolj, da bi našli in izbrisali vse napake, ki jih vsebuje.
Uporaba funkcije MsgBox
Pogosta težava v mnogih programih vključuje eno ali več spremenljivk, ki ne prevzamejo vrednosti, ki jih pričakujete. V takih primerih je spremljanje spremenljivk, medtem ko se vaša koda izvaja, koristna tehnika za odpravljanje napak. Eden od načinov za to je vstavljanje začasnih funkcij MsgBox v vašo rutino. Na primer, če imate spremenljivko z imenom CellCount, lahko vstavite naslednji stavek:
MsgBox CellCount
Ko izvedete rutino, funkcija MsgBox prikaže vrednost CellCount.
Pogosto je koristno prikazati vrednosti dveh ali več spremenljivk v sporočilnem polju. Naslednji stavek prikazuje trenutno vrednost dveh spremenljivk: LoopIndex (1) in CellCount (72), ločeni s presledkom.
MsgBox LoopIndex & “ “ & CellCount
Upoštevajte, da sta obe spremenljivki združeni z operatorjem za povezovanje (&) in med njima vstavite presledek. V nasprotnem primeru polje s sporočilom združi obe vrednosti skupaj, zaradi česar sta videti kot ena sama vrednost. Namesto presledka lahko uporabite tudi vgrajeno konstanto vbNewLine. vbNewLine vstavi prelom za prehod vrstice, ki prikaže besedilo v novi vrstici. Naslednji stavek prikazuje tri spremenljivke, vsako v ločeni vrstici:
Uporaba sporočilnega polja za prikaz vrednosti treh spremenljivk.
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Ta tehnika ni omejena na spremljanje spremenljivk. S sporočilom lahko prikažete vse vrste uporabnih informacij, medtem ko se vaša koda izvaja. Na primer, če se vaša koda vrti skozi vrsto listov, naslednji stavek prikaže ime in vrsto aktivnega lista:
MsgBox ActiveSheet.Name & “ “ & TypeName (ActiveSheet)
Če vaše sporočilo prikaže nekaj nepričakovanega, pritisnite Ctrl+Break in vidite pogovorno okno, ki vam sporoča, da je bilo izvajanje kode prekinjeno, imate štiri možnosti:
-
Kliknite gumb Nadaljuj. Koda se nadaljuje z izvajanjem.
-
Kliknite gumb Konec. Izvajanje se ustavi.
-
Kliknite gumb Odpravljanje napak. VBE preide v način za odpravljanje napak.
-
Kliknite gumb Pomoč. Zaslon pomoči vam pove, da ste pritisnili Ctrl+Break. Z drugimi besedami, ni zelo koristno.
Če pritisnete Ctrl+Break, se ustavi izvajanje vaše kode in vam ponudi nekaj izbire.
Če vaša tipkovnica nima tipke Break, poskusite pritisniti Ctrl+ScrollLock.
Ko odpravljate napake v kodi, lahko pogosto uporabljate funkcije MsgBox. Prepričajte se, da jih odstranite, ko ugotovite in odpravite težavo.
Vstavljanje stavkov Debug.Print
Kot alternativo uporabi funkcij MsgBox v vaši kodi lahko vstavite enega ali več začasnih stavkov Debug.Print. S temi stavki natisnite vrednost ene ali več spremenljivk v oknu Immediate. Tukaj je primer, ki prikazuje vrednosti treh spremenljivk:
Debug.Print LoopIndex, CellCount, MyVal
Upoštevajte, da so spremenljivke ločene z vejicami. Z enim samim stavkom Debug.Print lahko prikažete toliko spremenljivk, kot želite.
Debug.Print pošlje izhod v okno Immediate, tudi če je to okno skrito. Če okno VBE takojšnje ni vidno, pritisnite Ctrl+G (ali izberite Pogled → Takojšnje okno). Tukaj je nekaj rezultatov v oknu Immediate.
Stavek Debug.Print pošlje izhod v okno Immediate.
Za razliko od MsgBoxa, izjave Debug.Print ne ustavijo vaše kode. Zato morate paziti na okno Immediate, da vidite, kaj se dogaja.
Ko odpravite napake v kodi, ne pozabite odstraniti vseh stavkov Debug.Print. Celo velika podjetja, kot je Microsoft, občasno pozabijo odstraniti svoje izjave Debug.Print. V več prejšnjih različicah Excela ste vsakič, ko odprete dodatek Paket orodij za analizo, v oknu Immediate videli več čudnih sporočil. Ta težava je bila končno odpravljena v Excelu 2007.
Uporaba razhroščevalnika VBA
Oblikovalci Excela dobro poznajo koncept hroščev. Posledično Excel vključuje nabor orodij za odpravljanje napak, ki vam lahko pomagajo odpraviti težave v kodi VBA.