VBA Exit Sub | Poistu VBA-alimenettelystä, jos ehdot eivät täyty

Excel VBA Exit Sub -menettely

Exit Sub -lauseke sulkee alimenettelyn aikaisemmin kuin määritetyt VBA-koodirivit. Aliprosessista poistumiseen on kuitenkin sovellettava jonkinlainen looginen testi.

Rakennetaan tämä yksinkertaisella tavalla.

 Alimakronimi () '...' Joitakin koodeja tässä '... Exit Sub' Poistu aliosasta suorittamatta muita koodirivejä alla '...' Tämä koodi ohitetaan '... End Sub 

Esimerkkejä

Voit ladata tämän VBA Exit Sub Excel -mallin täältä - VBA Exit Sub Excel -malli

Esimerkki 1

Parempi esimerkki katso alla olevaa koodia.

Koodi:

 Sub Exit_Example1 () Dim k niin kauan kuin k = 1 - 10 solua (k, 1). Arvo = k Seuraava k End Sub 

Yllä oleva koodi lisää sarjanumerot 1-10 soluihin A1 - A10.

Haluan nyt lisätä vain 5 sarjanumeroa ja heti kun muuttujan “k” arvoksi tulee 6, haluan poistua alialtaasta.

Tätä varten minun on lisättävä looginen testi Excelissä, jos k = 6 ja sitten Lopeta Sub .

Koodi:

 Sub Exit_Example1 () Himmennä niin kauan kuin k = 1-10 Jos k = 6 Sitten Exit Sub 'Heti kun k-arvo tulee 6, se jättää huomiotta kaikki koodit ja poistuu soluista (k, 1). Arvo = k Seuraava k End Sub 

Suorita nyt koodi rivi riviltä. Aloita menettely painamalla F8-näppäintä.

Tällä hetkellä k-arvo on nolla.

Jos haluat muuttaa k-arvon 1, paina F8-näppäintä vielä kerran.

Joten k-arvo on 1, koodimme jatkuu ja lisää 1 soluun A1. Tällä tavalla jatka silmukan käyttöä, kunnes k: n arvosta tulee 6.

Nyt k: n arvo on 6 ja koodirivi on suorittamassa loogista testiämme poistuaksemme alimenettelystä. Jos painan F8-näppäintä vielä kerran, se poistuu suoraan vain koko alimenettelystä.

Kuten voimme nähdä, se on korostanut sanan "Exit Sub" . Kun painat F8-näppäintä, se poistuu alimenettelystä menemättä sanaan "End Sub" .

Esimerkki # 2 - Virheen ollessa poistu alimenettelystä

Voimme myös poistua alimenettelystä, kun saamme virhearvot. Harkitse esimerkiksi seuraavia tietoja jakamalla numero1 luvusta 2.

Alla on koodi saadaksesi kahden numeron jako.

Koodi:

 Sub Exit_Example2 () Dim k As Long For k = 2 - 9 solua (k, 3). Arvo = solut (k, 1). Arvo / solut (k, 2). Arvo seuraava k end sub 

Kuten tiedämme, emme voi jakaa yhtään lukua nollalla. Joten jos yritämme tehdä niin, saamme virheen ajonaikaisvirhenä '11': Jako nollalla.

Tämän välttämiseksi heti, kun kohtaamme virheitä, mainitsen makroni lopettaaksesi alimenettelyn välittömästi. Seuraava koodi on yksi tällainen tapaus.

Koodi:

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

Edellä mainitussa esimerkissä olen maininnut lausunnon ”On Error Goto ErrorHandler”. Tässä sana ErrorHandler on määrittämäni tunniste. Jos näet koodin alaosassa, olen maininnut tarran nimellä

ErrorHandler: Exit Sub 

Joten heti, kun koodi havaitsee virheen, se työntää koodia siirtyäksesi tarraan ja otsikolla on "Exit Sub" -lauseke, joten se poistuu alimenettelystä.

Suoritan nyt koodin, se laskee jaon, kunnes se löytää virheen.

Kuten näet solusta C7, se on havainnut virheen "Jako nollalla", joten se on poistunut alimenettelystä. Ilmoittamatta alimenettelystä poistuvalle käyttäjälle on aina vaarallinen asia. Ilmoittaa käyttäjälle virheestä voimme sisällyttää yhden pienen viestiruudun.

Koodi:

 Sub Exit_Example2 () Dim k As Long For k = 2-9 On Error GoTo ErrorHandler Cells (k, 3) .Arvo = Solut (k, 1) .Arvo / solut (k, 2) .Arvo Seuraava k ErrorHandler: MsgBox " Virhe on tapahtunut ja virhe on: "& vbNewLine & Err.Description Exit Sub End Sub 

Yllä oleva koodi näyttää virhesanoman ja poistu sitten alimenettelystä. Koodin ollessa käynnissä, jos tapahtuu virhe, se näyttää VBA: n viestiruudun kuten alla.

Tämä on enemmän luotettava tapa poistua alimenettelystä.


$config[zx-auto] not found$config[zx-overlay] not found