Možda ćete naići na neke probleme sa svojim VBA kodom, ali kako pronaći problem? Ponekad će vašem VBA kodu možda trebati otklanjanje pogrešaka. Nastavite čitati kako biste otkrili četiri najčešće metode za otklanjanje pogrešaka Excel VBA koda:
-
Ispitivanje koda
-
Umetanje funkcija MsgBox na različita mjesta u vašem kodu
-
Umetanje izjava Debug.Print
-
Korištenje ugrađenih alata za otklanjanje pogrešaka u programu Excel
Ispitivanje vašeg koda
Možda je najjednostavnija tehnika otklanjanja pogrešaka jednostavno pomno pogledate svoj kod kako biste vidjeli možete li pronaći problem. Ova metoda, naravno, zahtijeva znanje i iskustvo. Drugim riječima, morate znati što radite. Ako imate sreće, pogreška odmah iskoči, a vi se lupite po čelu i kažete: "D'oh!" Kada se bol u čelu smanji, možete riješiti problem.
Obratite pažnju na upotrebu riječi: "Ako budeš imao sreće." To je zato što često otkrijete pogreške kada radite na svom programu osam sati zaredom, 2 je ujutro, a vi radite na kofeinu i snazi volje. U takvim trenucima imate sreće ako uopće možete vidjeti svoj kod, a kamoli pronaći greške. Stoga se nemojte iznenaditi ako jednostavno ispitivanje vašeg koda nije dovoljno da pronađete i izbrišete sve greške koje sadrži.
Korištenje funkcije MsgBox
Čest problem u mnogim programima uključuje jednu ili više varijabli koje ne preuzimaju vrijednosti koje očekujete. U takvim slučajevima, praćenje varijabli dok se vaš kod izvodi je korisna tehnika za otklanjanje pogrešaka. Jedan od načina da to učinite je umetanje privremenih MsgBox funkcija u svoju rutinu. Na primjer, ako imate varijablu pod nazivom CellCount, možete umetnuti sljedeću izjavu:
MsgBox CellCount
Kada izvršite rutinu, funkcija MsgBox prikazuje vrijednost CellCount.
Često je korisno prikazati vrijednosti dvije ili više varijabli u okviru za poruke. Sljedeća izjava prikazuje trenutnu vrijednost dviju varijabli: LoopIndex (1) i CellCount (72), odvojene razmakom.
MsgBox LoopIndex & “ “ & CellCount
Primijetite da su dvije varijable kombinirane s operatorom spajanja (&) i umetnite razmak između njih. Inače, okvir s porukom povezuje dvije vrijednosti zajedno, čineći ih kao jednu vrijednost. Također možete koristiti ugrađenu konstantu, vbNewLine, umjesto znaka za razmak. vbNewLine umeće prijelom uvođenja reda, koji prikazuje tekst u novom retku. Sljedeća izjava prikazuje tri varijable, svaka u zasebnom retku:
Korištenje okvira s porukom za prikaz vrijednosti tri varijable.
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Ova tehnika nije ograničena na praćenje varijabli. Možete koristiti okvir za poruke za prikaz svih vrsta korisnih informacija dok je vaš kôd pokrenut. Na primjer, ako vaš kod petlja kroz niz listova, sljedeća izjava prikazuje naziv i vrstu aktivnog lista:
MsgBox ActiveSheet.Name & “ “ & TypeName (ActiveSheet)
Ako vaš okvir s porukom pokazuje nešto neočekivano, pritisnite Ctrl+Break i vidjet ćete dijaloški okvir koji vam govori da je izvršenje koda prekinuto, imate četiri izbora:
-
Kliknite gumb Nastavi. Kod se nastavlja izvršavati.
-
Kliknite gumb Kraj. Izvršenje se zaustavlja.
-
Kliknite gumb Otklanjanje pogrešaka. VBE prelazi u način za otklanjanje pogrešaka.
-
Kliknite gumb Pomoć. Zaslon pomoći govori vam da ste pritisnuli Ctrl+Break. Drugim riječima, nije od velike pomoći.
Pritiskom na Ctrl+Break zaustavlja se izvršavanje vašeg koda i daje vam neke mogućnosti izbora.
Ako vaša tipkovnica nema tipku Break, pokušajte pritisnuti Ctrl+ScrollLock.
Slobodno često koristite funkcije MsgBoxa kada otklanjate pogreške u svom kodu. Samo se pobrinite da ih uklonite nakon što identificirate i ispravite problem.
Umetanje izjava Debug.Print
Kao alternativu korištenju funkcija MsgBox u vašem kodu, možete umetnuti jednu ili više privremenih izjava Debug.Print. Koristite ove izjave za ispis vrijednosti jedne ili više varijabli u prozoru Immediate. Evo primjera koji prikazuje vrijednosti tri varijable:
Debug.Print LoopIndex, CellCount, MyVal
Primijetite da su varijable odvojene zarezima. Možete prikazati onoliko varijabli koliko želite s jednom naredbom Debug.Print.
Debug.Print šalje izlaz u prozor Immediate čak i ako je taj prozor skriven. Ako VBE-ov neposredni prozor nije vidljiv, pritisnite Ctrl+G (ili odaberite Prikaz → Neposredni prozor). Evo nekih rezultata u prozoru Immediate.
Naredba Debug.Print šalje izlaz u prozor Immediate.
Za razliku od MsgBoxa, izjave Debug.Print ne zaustavljaju vaš kod. Stoga morate paziti na prozor Immediate da biste vidjeli što se događa.
Nakon što otklonite pogreške u kodu, svakako uklonite sve naredbe Debug.Print. Čak i velike tvrtke poput Microsofta povremeno zaborave ukloniti svoje izjave Debug.Print. U nekoliko prijašnjih verzija Excela, svaki put kada se otvori dodatak Analysis ToolPak, vidjeli biste nekoliko čudnih poruka u prozoru Odmah. Taj je problem konačno riješen u Excelu 2007.
Korištenje VBA debuggera
Dizajneri programa Excel dobro su upoznati s konceptom bugova. Posljedično, Excel uključuje skup alata za otklanjanje pogrešaka koji vam mogu pomoći da ispravite probleme u vašem VBA kodu.