VBA Exit Sub | Lépjen ki 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 további kódsorokat hajtana végre '...' Ezt a kódot figyelmen kívül hagyja '... End Sub 

Példák

Itt töltheti le ezt a VBA Exit Sub Excel sablont - VBA Exit Sub Excel sablont

1. példa

Egy jobb példaért tekintse 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-től 10-ig sorszámot illeszt be az A1-től A10-ig.

Most csak 5 sorszámot akarok beilleszteni, és amint a „k” változó értéke 6 lesz, kilépek az alból.

Ehhez hozzá kell adnom a logikai tesztet az excel programban, ha IF = k, 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 gombot 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 beilleszt 1-et az A1 cellába. Így folytassa a ciklust, 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 egyenesen csak az egész alfolyamatból lép ki.

Mint láthatjuk, kiemelte az „Exit Sub” szót . Az F8 billentyű lenyomásával 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_Example2 () Dim k As Long For k = 2 - 9 Cell (k, 3). Érték = Cellák (k, 1). Érték / Cellák (k, 2). Érték Next k End Sub 

As we know we cannot divide any number by zero. So if we attempt to do that we will get the error as Run Time Error ‘11’: Division By Zero.

To avoid this as soon as we encounter any error I will mention my macro to exit the subprocedure with immediate effect. The below code is one such case.

Code:

 Sub Exit_Example2() Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells(k, 3).Value = Cells(k, 1).Value / Cells(k, 2).Value Next k ErrorHandler: Exit Sub End Sub 

In the above example, I have mentioned the statement “On Error Goto ErrorHandler”. Here the word ErrorHandler is the label I have assigned. If you can see at the bottom of the code I have mentioned the label as

ErrorHandler: Exit Sub 

So as soon as code encounters an error it will push code to jump to the label and label has the “Exit Sub” statement, so will exit the subprocedure.

Most futtatom a kódot, kiszá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. Hogy tájékoztassuk 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, az üzenetmező jelenik meg a VBA-ban, mint az alábbiakban.

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