Þú gætir lent í einhverjum vandræðum með VBA kóðann þinn, en hvernig finnurðu vandamálið? Stundum gæti VBA kóðann þinn þurft smá villuleit. Haltu áfram að lesa til að uppgötva fjórar algengustu aðferðir til að kemba Excel VBA kóða:
-
Skoða kóðann
-
Að setja inn MsgBox aðgerðir á ýmsum stöðum í kóðanum þínum
-
Setja inn Debug.Print yfirlýsingar
-
Með því að nota innbyggðu kembiforritið í Excel
Er að skoða kóðann þinn
Kannski er einfaldasta villuleitartæknin einfaldlega að skoða kóðann þinn vel til að sjá hvort þú getur fundið vandamálið. Þessi aðferð krefst auðvitað þekkingar og reynslu. Með öðrum orðum, þú verður að vita hvað þú ert að gera. Ef þú ert heppinn hoppar villan strax út og þú smellir á ennið á þér og segir: „Ó! Þegar ennisverkurinn minnkar geturðu lagað vandamálið.
Taktu eftir notkun orðanna „Ef þú ert heppinn“. Það er vegna þess að oft uppgötvarðu villur þegar þú hefur verið að vinna að forritinu þínu í átta klukkustundir samfleytt, klukkan er 2 að morgni og þú keyrir á koffíni og viljastyrk. Á svona stundum ertu heppinn ef þú getur jafnvel séð kóðann þinn, hvað þá að finna villurnar. Svo, ekki vera hissa ef einfaldlega að skoða kóðann þinn er ekki nóg til að láta þig finna og eyða öllum villum sem hann inniheldur.
Að nota MsgBox aðgerðina
Algengt vandamál í mörgum forritum felur í sér að ein eða fleiri breytur taka ekki á sig þau gildi sem þú býst við. Í slíkum tilvikum er hjálpleg kembiforrit að fylgjast með breytunni/breytunum á meðan kóðinn þinn keyrir. Ein leið til að gera þetta er með því að setja tímabundnar MsgBox aðgerðir inn í rútínuna þína. Til dæmis, ef þú ert með breytu sem heitir CellCount, geturðu sett inn eftirfarandi setningu:
MsgBox CellCount
Þegar þú keyrir venjuna sýnir MsgBox aðgerðin gildi CellCount.
Það er oft gagnlegt að birta gildi tveggja eða fleiri breyta í skilaboðareitnum. Eftirfarandi setning sýnir núverandi gildi tveggja breyta: LoopIndex (1) og CellCount (72), aðskilin með bili.
MsgBox LoopIndex & “ “ & CellCount
Taktu eftir að breyturnar tvær eru sameinaðar með samtengingaraðgerðinni (&) og settu bil á milli þeirra. Annars tengir skilaboðakassinn gildin tvö saman, sem gerir það að verkum að þau líta út eins og eitt gildi. Þú getur líka notað innbyggða fastann, vbNewLine, í staðinn fyrir bilstafinn. vbNewLine setur inn línuskil sem sýnir textann á nýrri línu. Eftirfarandi fullyrðing sýnir þrjár breytur, hver á sérstakri línu:

Notkun skilaboðakassa til að sýna gildi þriggja breyta.
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Þessi tækni er ekki takmörkuð við eftirlit með breytum. Þú getur notað skilaboðareit til að birta alls kyns gagnlegar upplýsingar á meðan kóðinn þinn er í gangi. Til dæmis, ef kóðinn þinn fer í gegnum röð blaða, sýnir eftirfarandi setning nafn og gerð virka blaðsins:
MsgBox ActiveSheet.Name & “ “ & TypeName(ActiveSheet)
Ef skilaboðareiturinn þinn sýnir eitthvað óvænt, ýttu á Ctrl+Break og þú sérð glugga sem segir þér að keyrsla kóða hafi verið trufluð, þú hefur fjóra valkosti:
-
Smelltu á hnappinn Halda áfram. Kóðinn heldur áfram að keyra.
-
Smelltu á End hnappinn. Framkvæmd stöðvast.
-
Smelltu á villuleitarhnappinn. VBE fer í villuleitarham.
-
Smelltu á hjálp hnappinn. Hjálparskjár segir þér að þú hafir ýtt á Ctrl+Break. Með öðrum orðum, það er ekki mjög gagnlegt.
Með því að ýta á Ctrl+Break stöðvast keyrsla kóðans þíns og gefur þér nokkra valkosti.
Ef lyklaborðið þitt er ekki með Break takka skaltu prófa að ýta á Ctrl+ScrollLock.
Ekki hika við að nota MsgBox aðgerðir oft þegar þú villur kóðann þinn. Gakktu úr skugga um að þú fjarlægir þau eftir að þú hefur greint og lagfært vandamálið.
Setja inn Debug.Print yfirlýsingar
Í stað þess að nota MsgBox aðgerðir í kóðanum þínum geturðu sett inn eina eða fleiri tímabundna Debug.Print staðhæfingar. Notaðu þessar fullyrðingar til að prenta gildi einnar eða fleiri breyta í Immediate glugganum. Hér er dæmi sem sýnir gildi þriggja breyta:
Debug.Print LoopIndex, CellCount, MyVal
Taktu eftir að breyturnar eru aðskildar með kommum. Þú getur birt eins margar breytur og þú vilt með einni Debug.Print yfirlýsingu.
Debug.Print sendir úttak í Immediate gluggann, jafnvel þótt þessi gluggi sé falinn. Ef VBE's Immediate gluggi er ekki sýnilegur, ýttu á Ctrl+G (eða veldu View → Immediate Window). Hér er nokkur framleiðsla í Immediate glugganum.

Debug.Print yfirlýsing sendir úttak í Immediate gluggann.
Ólíkt MsgBox stöðva Debug.Print yfirlýsingar ekki kóðann þinn. Svo þú þarft að fylgjast með strax glugganum til að sjá hvað er að gerast.
Eftir að þú hefur kembiforritað kóðann þinn, vertu viss um að fjarlægja allar Debug.Print setningarnar. Jafnvel stór fyrirtæki eins og Microsoft gleyma stundum að fjarlægja Debug.Print yfirlýsingar sínar. Í nokkrum fyrri útgáfum af Excel, í hvert skipti sem Analysis ToolPak viðbótin var opnuð, myndirðu sjá nokkur undarleg skilaboð í Immediate glugganum. Það vandamál var loksins lagað í Excel 2007.
Notkun VBA villuleitar
Excel hönnuðirnir þekkja vel hugmyndina um pöddur. Þar af leiðandi inniheldur Excel sett af villuleitarverkfærum sem geta hjálpað þér að leiðrétta vandamál í VBA kóðanum þínum.