VBA Exit Sub - Kilépés a VBA alfolyamatból, ha a feltételek nem teljesülnek

Excel VBA Exit Sub eljárás

Az Exit Sub utasítás korábban kilép az alfolyamatból, mint a VBA kódok meghatározott sorai. Az alfolyamatból való kilépéshez azonban valamilyen logikai tesztet kell végrehajtanunk.

Konstruáljuk ezt egyszerű fogalmakkal.

Sub MacroName () '…' Néhány kód itt '… Exit Sub' Kilépés az alból anélkül, hogy a következő kódsorokat végrehajtaná '…' Ezt a kódot a rendszer figyelmen kívül hagyja '… End Sub

Példák

1. példa

Egy jobb példaért nézze meg az alábbi kódot.

Kód:

Sub Exit_Példa1 () Dim k meddig k = 1-10 celláig (k, 1). Érték = k Következő k End Sub

A fenti kód 1 és 10 közötti sorszámot illeszt be az A1-től A10-ig.

Most csak 5 sorozatszámot szeretnék beilleszteni, és amint a „k” változó értéke 6 lesz, ki akarok lépni az alról.

Hozzá kell adnom a logikai tesztet az excelben, ha IF k = 6, majd az Exit Sub .

Kód:

Sub Exit_Példa1 () Dim k Meddig k = 1-től 10-ig Ha k = 6, akkor Ex Ex Sub "Amint a k értéke 6 lesz, figyelmen kívül hagyja az összes kódot és kilép a cellákból (k, 1). Érték = k Következő k Vége Alatti

Most futtassa a kódot soronként. Nyomja meg az F8 billentyűt az eljárás megkezdéséhez.

Mostantól a k értéke nulla.

A k érték 1-re változtatásához nyomja meg még egyszer az F8 billentyűt.

Tehát a k értéke 1, kódunk folyamatosan fut, és beilleszti az 1-et az A1 cellába. Így folytassa a hurok futtatását, amíg k értéke 6 lesz.

Most k értéke 6, és a kódsor végrehajtja logikai tesztünket, hogy kilépjen az alfolyamatból. Ha még egyszer megnyomom az F8 billentyűt, akkor az csak az egész alfolyamatot fogja végrehajtani.

Mint láthatjuk, kiemelte az „Exit Sub” szót . Az F8 billentyű lenyomásakor kilép az alfolyamatból anélkül, hogy az „End Sub” szóra lépne.

2. példa - Hiba esetén lépjen ki az alfolyamatból

Kiléphetünk az alfolyamatból is, amikor megkapjuk a hibaértékeket. Például vegye figyelembe az alábbi adatokat, ha elosztja a1-es számot a 2-től.

Az alábbiakban látható a két szám felosztásának kódja.

Kód:

Sub Exit_Példa2 () Dim k meddig k = 2 - 9 celláig (k, 3). Érték = cellák (k, 1). Érték / cellák (k, 2). Érték következő k End Sub

Mint tudjuk, egyetlen számot sem oszthatunk el nullával. Tehát, ha megpróbáljuk ezt megtenni, akkor a hibát „11” futási hibaként kapjuk: osztás nullával.

Ennek elkerülése érdekében, amint bármilyen hibával találkozunk, megemlítem a makrót, hogy azonnali hatállyal kilépjek az alfolyamatból. Az alábbi kód egy ilyen eset.

Kód:

Sub Exit_Example2 () Dim k As Long For k = 2 - 9 On Error GoTo ErrorHandler Cells (k, 3). Érték = Cellák (k, 1). Érték / cellák (k, 2). Érték Következő k ErrorHandler: Exit Sub End Sub

A fenti példában megemlítettem a „On Error Goto ErrorHandler” állítást. Itt a ErrorHandler szó a hozzárendelt címke. Ha látja a kód alján, akkor a márkát említettem

ErrorHandler: Kilépés az alból

Amint a kód hibát észlel, a kódra ugrik, hogy a címkéhez ugorjon, és a márka rendelkezik az „Exit Sub” utasítással, hogy kilépjen az alfolyamatból.

Most futtatom a kódot; addig számolja az osztást, amíg hibát nem talál.

Amint a C7 cellában láthatja, hibát észlelt, mint „osztás nullával”, ezért kilépett az alfolyamatból. Az alfolyamatból kilépő felhasználó tájékoztatása nélkül mindig veszélyes dolog. Ha értesítenénk a felhasználót a hibáról, egy kis üzenetdobozt is felvehetünk.

Kód:

Sub Exit_Example2 () Dim k As Long For k = 2 - 9 On On GoTo ErrorHandler Cells (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Value Next k ErrorHandler: MsgBox " Hiba történt, és a hiba a következő: "& vbNewLine & Err.Description Exit Sub End Sub Sub

A fenti kód megmutatja a hibaüzenetet, majd kilép az alfolyamatból. A kód futtatása közben, ha hiba történik, akkor az üzenetmező jelenik meg a VBA-ban, mint az alábbiak.

Ez inkább megbízható módja az alrendszerből való kilépésnek.

érdekes cikkek...