Teil võib tekkida probleeme VBA-koodiga, kuid kuidas probleemi leida? Mõnikord võib teie VBA-kood vajada silumist. Jätkake lugemist, et leida neli kõige levinumat meetodit Exceli VBA-koodi silumiseks.
-
Koodi uurimine
-
MsgBoxi funktsioonide sisestamine koodi erinevatesse kohtadesse
-
Debug.Print avalduste sisestamine
-
Exceli sisseehitatud silumistööriistade kasutamine
Teie koodi uurimine
Võib-olla on kõige lihtsam silumistehnika lihtsalt oma koodi hoolikalt uurida, et näha, kas leiate probleemi. See meetod nõuab muidugi teadmisi ja kogemusi. Teisisõnu, sa pead teadma, mida sa teed. Kui teil veab, hüppab viga kohe välja ja te lööte vastu lauba ja ütlete: "Oh!" Kui otsmikuvalu väheneb, saate probleemi lahendada.
Pange tähele sõnade "Kui teil veab" kasutamist. Selle põhjuseks on asjaolu, et sageli avastate vigu, kui olete oma programmiga töötanud kaheksa tundi järjest, kell on 2 öösel ning töötate kofeiini ja tahtejõuga. Sellistel aegadel on teil õnne, kui näete isegi oma koodi, rääkimata vigade leidmisest. Seetõttu ärge imestage, kui lihtsalt koodi uurimisest ei piisa, et leida ja kustutada kõik selles sisalduvad vead.
MsgBox funktsiooni kasutamine
Paljude programmide tavaline probleem seisneb selles, et üks või mitu muutujat ei võta oodatud väärtusi. Sellistel juhtudel on muutuja(te) jälgimine koodi käitamise ajal abiks silumistehnika. Üks võimalus seda teha on ajutiste MsgBoxi funktsioonide sisestamine oma rutiini. Näiteks kui teil on muutuja nimega CellCount, saate sisestada järgmise avalduse:
MsgBox CellCount
Kui käivitate rutiini, kuvab funktsioon MsgBox CellCounti väärtuse.
Sageli on abiks kahe või enama muutuja väärtuste kuvamine sõnumikastis. Järgmises lauses kuvatakse kahe muutuja praegune väärtus: LoopIndex (1) ja CellCount (72), eraldatuna tühikuga.
MsgBox LoopIndex & " " & CellCount
Pange tähele, et need kaks muutujat on kombineeritud konkatenatsioonioperaatoriga (&) ja sisestage nende vahele tühik. Vastasel juhul stringib sõnumikast kaks väärtust kokku, muutes need ühe väärtusena. Tühiku asemel võite kasutada ka sisseehitatud konstanti vbNewLine. vbNewLine lisab reavahetuse katkestuse, mis kuvab teksti uuel real. Järgmises lauses kuvatakse kolm muutujat, millest igaüks on eraldi real:
Sõnumikasti kasutamine kolme muutuja väärtuse kuvamiseks.
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
See meetod ei piirdu muutujate jälgimisega. Saate kasutada sõnumikasti, et kuvada koodi töötamise ajal kõikvõimalikku kasulikku teavet. Näiteks kui teie kood liigub läbi lehtede seeria, kuvatakse järgmises lauses aktiivse lehe nimi ja tüüp:
MsgBox ActiveSheet.Name & " " & TypeName(ActiveSheet)
Kui teie sõnumikastis kuvatakse midagi ootamatut, vajutage klahvikombinatsiooni Ctrl+Break ja näete dialoogiboksi, mis teatab, et koodi täitmine on katkestatud, on teil neli valikut.
-
Klõpsake nuppu Jätka. Koodi täitmine jätkub.
-
Klõpsake nuppu Lõpeta. Täitmine peatub.
-
Klõpsake nuppu Silumine. VBE läheb silumisrežiimi.
-
Klõpsake nuppu Abi. Abiekraan annab teada, et vajutasite klahvikombinatsiooni Ctrl+Break. Teisisõnu, see ei ole väga kasulik.
Ctrl+Break vajutamine peatab teie koodi täitmise ja annab teile mõned valikud.
Kui teie klaviatuuril pole Break-klahvi, proovige vajutada klahvikombinatsiooni Ctrl+ScrollLock.
Kasutage koodi silumisel sageli MsgBoxi funktsioone. Pärast probleemi tuvastamist ja kõrvaldamist eemaldage need lihtsalt.
Debug.Print avalduste sisestamine
Alternatiivina MsgBoxi funktsioonide kasutamisele koodis saate sisestada ühe või mitu ajutist Debug.Print avaldust. Kasutage neid avaldusi ühe või mitme muutuja väärtuse printimiseks kohe aknas. Siin on näide, mis kuvab kolme muutuja väärtused:
Debug.Print LoopIndex, CellCount, MyVal
Pange tähele, et muutujad eraldatakse komadega. Saate ühe Debug.Print lausega kuvada nii palju muutujaid, kui soovite.
Debug.Print saadab väljundi vahetu aknasse isegi siis, kui see aken on peidetud. Kui VBE vahetu aken pole nähtav, vajutage klahvikombinatsiooni Ctrl+G (või valige Vaade → Vahetu aken). Siin on vahetu akna väljund.
Debug.Print avaldus saadab väljundi vahetu aknasse.
Erinevalt MsgBoxist ei peata Debug.Print avaldused teie koodi. Seega peate silma peal hoidma vahetul aknal, et näha, mis toimub.
Pärast koodi silumist eemaldage kindlasti kõik Debug.Printi avaldused. Isegi suured ettevõtted, nagu Microsoft, unustavad aeg-ajalt oma Debug.Printi avaldused eemaldada. Mitmes varasemas Exceli versioonis nägite iga kord, kui Analysis ToolPaki lisandmoodul avati, kohe aknas mitu kummalist teadet. See probleem lahendati lõpuks Excel 2007-s.
VBA siluri kasutamine
Exceli disainerid on vigade kontseptsiooniga hästi kursis. Sellest tulenevalt sisaldab Excel komplekti silumistööriistu, mis aitavad teil VBA-koodi probleeme lahendada.