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

Excel VBA Exit Sub -menettely

Exit Sub -käsky sulkee alimenettelyn aikaisemmin kuin määritetyt VBA-koodien rivit. Aliprosessista poistumiseen on kuitenkin sovellettava jonkinlainen looginen testi.

Rakennetaan tämä yksinkertaisella tavalla.

Alimakronimi () '…' Jotkut koodit tässä '… Exit Sub' Poistu aliosasta suorittamatta muita koodirivejä alla '…' Tämä koodi ohitetaan

Esimerkkejä

Esimerkki 1

Saat paremman esimerkin alla olevasta koodista.

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.

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-arvoksi tulee 6, se ohittaa kaikki koodit ja sulkee solut (k, 1). Arvo = k Seuraava k End Sub

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

Tästä lähtien 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 menee suoraan vain koko alimenettelyyn.

Kuten näemme, 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ä saatuamme 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

Yllä olevassa 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 tuotemerkin nimellä

ErrorHandler: Exit Sub

Heti kun koodi havaitsee virheen, se työntää koodia siirtyäksesi tarraan, ja tuotemerkillä on Exit Sub -käsky, jotta se poistuu alimenettelystä.

Nyt suoritan koodin; se laskee jaon, kunnes 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 suorituksen aikana, jos tapahtuu virhe, se näyttää VBA: n viestiruudun kuten alla.

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

Mielenkiintoisia artikkeleita...