Problémákba ütközhet a VBA-kóddal, de hogyan találja meg a problémát? Néha előfordulhat, hogy a VBA-kód hibakeresést igényel. Olvassa tovább, és fedezze fel az Excel VBA-kód hibakeresésének négy leggyakoribb módszerét:
-
A kód vizsgálata
-
MsgBox függvények beszúrása a kód különböző helyeire
-
Debug.Print utasítások beszúrása
-
Az Excel beépített hibakereső eszközeinek használata
A kódod vizsgálata
Talán a legegyszerűbb hibakeresési technika egyszerűen csak alaposan megnézi a kódot, hogy megtudja, megtalálja-e a problémát. Ez a módszer természetesen tudást és tapasztalatot igényel. Más szóval, tudnod kell, mit csinálsz. Ha szerencséd van, a hiba azonnal kiugrik, és rácsapsz a homlokodra, és azt mondod: "Ó!" Amikor a homlokfájdalom csökken, megoldhatja a problémát.
Figyeld meg a „ha szerencséd van” szavak használatát. Ennek az az oka, hogy gyakran akkor fedez fel hibákat, amikor már nyolc órája folyamatosan dolgozik a programján, hajnali 2 óra van, és koffeinnel és akaraterővel dolgozik. Ilyenkor szerencsés vagy, ha még a kódodat is látod, nemhogy megtalálod a hibákat. Ezért ne lepődjön meg, ha a kód egyszerű vizsgálata nem elegendő ahhoz, hogy megtalálja és törölje a benne található hibákat.
Az MsgBox funkció használata
Sok programban gyakori probléma, hogy egy vagy több változó nem veszi fel a várt értékeket. Ilyen esetekben a változó(k) figyelése a kód futása közben hasznos hibakeresési technika. Ennek egyik módja az, hogy ideiglenes MsgBox függvényeket illeszt be a rutinjába. Például, ha van egy CellCount nevű változója, beillesztheti a következő utasítást:
MsgBox CellCount
A rutin végrehajtásakor az MsgBox függvény megjeleníti a CellCount értékét.
Gyakran hasznos két vagy több változó értékének megjelenítése az üzenetmezőben. A következő utasítás két változó aktuális értékét jeleníti meg: LoopIndex (1) és CellCount (72), szóközzel elválasztva.
MsgBox LoopIndex & " " & CellCount
Figyeljük meg, hogy a két változó az összefűzési operátorral (&) van kombinálva, és szúrjon közéjük egy szóközt. Ellenkező esetben az üzenetmező összefűzi a két értéket, így azok egyetlen értéknek tűnnek. A szóköz helyett használhatja a beépített állandót, a vbNewLine-t is. A vbNewLine soremelési törést szúr be, amely a szöveget egy új sorban jeleníti meg. A következő utasítás három változót jelenít meg, mindegyik külön sorban:
Üzenetdoboz használata három változó értékének megjelenítéséhez.
MsgBox LoopIndex & vbNewLine & CellCount & vbNewLine & MyVal
Ez a technika nem korlátozódik a változók figyelésére. Üzenetdoboz segítségével mindenféle hasznos információt megjeleníthet, miközben a kód fut. Például, ha a kód egy sor lapon fut keresztül, a következő utasítás megjeleníti az aktív lap nevét és típusát:
MsgBox ActiveSheet.Name & " " & TypeName(ActiveSheet)
Ha az üzenetablak valami váratlant mutat, nyomja le a Ctrl+Break billentyűkombinációt, és megjelenik egy párbeszédpanel, amely közli, hogy a kódvégrehajtás megszakadt, négy lehetőség közül választhat:
-
Kattintson a Folytatás gombra. A kód végrehajtása folytatódik.
-
Kattintson a Befejezés gombra. A végrehajtás leáll.
-
Kattintson a Debug gombra. A VBE Debug módba lép.
-
Kattintson a Súgó gombra. A súgó képernyőn megjelenik, hogy megnyomta a Ctrl+Break billentyűkombinációt. Más szóval, ez nem túl hasznos.
A Ctrl+Break lenyomása leállítja a kód végrehajtását, és néhány választási lehetőséget kínál.
Ha a billentyűzeten nincs Break billentyű, próbálja meg lenyomni a Ctrl+ScrollLock billentyűkombinációt.
Nyugodtan használja gyakran az MsgBox funkcióit a kód hibakeresése során. Csak a probléma azonosítása és kijavítása után távolítsa el őket.
Debug.Print utasítások beszúrása
Az MsgBox függvények kódjában való használatának alternatívájaként beszúrhat egy vagy több ideiglenes Debug.Print utasítást. Ezekkel az utasításokkal nyomtathatja ki egy vagy több változó értékét az azonnali ablakban. Íme egy példa, amely három változó értékét jeleníti meg:
Debug.Print LoopIndex, CellCount, MyVal
Figyeljük meg, hogy a változókat vesszővel választjuk el. Egyetlen Debug.Print utasítással tetszőleges számú változót jeleníthet meg.
A Debug.Print akkor is elküldi a kimenetet az azonnali ablaknak, ha az ablak el van rejtve. Ha a VBE azonnali ablaka nem látható, nyomja le a Ctrl+G billentyűkombinációt (vagy válassza a Nézet → Azonnali ablak menüpontot). Íme néhány kimenet az azonnali ablakban.
A Debug.Print utasítás kimenetet küld az azonnali ablakba.
Az MsgBox-szal ellentétben a Debug.Print utasítások nem állítják le a kódot. Ezért figyelnie kell az azonnali ablakot, hogy lássa, mi történik.
A kód hibakeresése után feltétlenül távolítsa el az összes Debug.Print utasítást. Még a nagy cégek, például a Microsoft is, időnként elfelejtik eltávolítani a Debug.Print nyilatkozataikat. Az Excel számos korábbi verziójában minden alkalommal, amikor az Analysis ToolPak bővítményt megnyitották, számos furcsa üzenetet láthatott az azonnali ablakban. Ezt a problémát végül az Excel 2007-ben javították.
A VBA hibakereső használata
Az Excel tervezői nagyon jól ismerik a hibák fogalmát. Következésképpen az Excel tartalmaz egy sor hibakereső eszközt, amelyek segítenek kijavítani a VBA-kóddal kapcsolatos problémákat.