/ / Hiba kezelése Excel VBA - ban

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.

Hiba kezelése Excel VBA-ban

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.

Dim rng As Range, cell As Range

2. A Range objektum rng-t a kiválasztott tartományban inicializáljuk.

Set rng = Selection

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:

For Each cell In rng

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.

On Error Resume Next

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.

cell.Value = Sqr(cell.Value)

6. Lépjen ki a Visual Basic Editorból és tesztelje a programot.

Eredmény:

Hiba esetén folytassa a következő eredményt

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:

On Error GoTo InvalidValue:

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:

Exit Sub

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:

InvalidValue:

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.

MsgBox "can"t calculate square root at cell " & cell.Address

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.

Resume Next

6. Lépjen ki a Visual Basic Editorból és tesztelje a programot.

Eredmény:

Hiba a GoTo eredményen

Hiba a GoTo eredményen

Hiba a GoTo eredményen

Szintén olvasható: