Hiba kezelése Excel VBA-ban
Az alábbiakban két programot nézünk be Excel VBA. Egy program egyszerűen figyelmen kívül hagyja a hibákat. A másik program folytatja a végrehajtást meghatározott soron hiba esetén.
Helyzet:
Mindkét program kiszámolja a számok négyzetgyökét.
Szögletes gyökér 1
Adja hozzá a következő kódsorokat a "Square Root 1" parancsgombhoz.
1. Először két tartományobjektumot deklarálunk. Hívjuk a gamma objektumokat rng és cell.
2. A Range objektum rng-t a kiválasztott tartományban inicializáljuk.
3. Szeretnénk kiszámolni az egyes cellák négyzetgyökét egy véletlenszerűen kiválasztott tartományban (ez a tartomány bármilyen méretű lehet). Az Excel VBA programban használhatja a For Every Next hurot ehhez. Adja hozzá a következő kódsorokat:
Next cell
Megjegyzés: itt rng és cell véletlenszerűen vannak kiválasztva, bármilyen nevet használhat. Ne feledje, hogy ezekre a nevekre utal a kód többi részében.
4. Adja hozzá a következő kódot a hurokhoz.
5. Ezután kiszámítjuk az érték négyzetgyökét. Az Excel VBA-ban ezt a Sqr függvényt használhatjuk. Adja hozzá a következő kódot a hurokhoz.
6. Lépjen ki a Visual Basic Editorból és tesztelje a programot.
Eredmény:
Következtetés: Az Excel VBA figyelmen kívül hagyta az érvénytelen értékeket tartalmazó cellákat, például a negatív számokat és a szöveget. Az "On Error Next Resume Next" utasítás használata nélkül két hibát kapsz. Ügyeljen arra, hogy csak az "On Error Resume Next" utasítást használja, ha biztos benne, hogy a hibák figyelmen kívül hagyása OK.
Négyzetgyök 2
Adja hozzá a következő kódsorokat a "négyzetgyök 2" parancsgombhoz.
1. Ugyanaz a program, mint a Square Root 1, de cserélje ki az "On Error Resume Next" opciót a következőkkel:
Megjegyzés: Az InvalidValue véletlenszerűen van kiválasztva, bármilyen nevet használhat. Ne feledje, hogy ezt a nevet használja a kód többi részében.
2. A For Every Next hurokon kívül először adja hozzá a következő kódsor:
E vonal nélkül a kód többi része (hibakód) végrehajtásra kerül, akkor is, ha nincs hiba!
3. Az Excel VBA folytatja a végrehajtást az "InvalidValue:" értékkel kezdődő sorban, amikor hibát talál (ne felejtse el a kettőspontot) Adja hozzá a következő kódot:
4. Most egyszerűen megőrizzük hibakódunkat. Megjelenítünk egy MsgBox-ot egy szöveggel és annak a cellanak a címét, ahol a hiba történt.
5. Adja hozzá a következő sort, hogy utasítsa az Excel VBA-t, hogy folytassa a végrehajtást a hibakód végrehajtása után.
6. Lépjen ki a Visual Basic Editorból és tesztelje a programot.
Eredmény: