VBA Exit Sub | Avslutt VBA-underprosedyre hvis vilkårene ikke er oppfylt

Excel VBA Exit Sub Procedure

Exit Sub- setning går ut av underprosedyren tidligere enn de definerte linjene i VBA-koder. For å gå ut av underprosedyren må vi imidlertid bruke en slags logisk test.

La oss konstruere dette i enkle termer.

 Sub MacroName () '...' Noe kode her '... Avslutt Sub' Gå ut av Sub uten å utføre flere kodelinjer under '...' Denne koden vil bli ignorert '... End Sub 

Eksempler

Du kan laste ned denne VBA Exit Sub Excel-malen her - VBA Exit Sub Excel Template

Eksempel 1

For et bedre eksempel se på koden nedenfor.

Kode:

 Sub Exit_Example1 () Dim k Så lenge For k = 1 til 10 celler (k, 1). Verdi = k Neste k End Sub 

Ovennevnte kode vil sette inn serienumre fra 1 til 10 i cellene A1 til A10.

Nå vil jeg bare sette inn 5 serienumre, og så snart verdien av variabelen “k” blir 6, vil jeg avslutte underenheten.

For dette må jeg legge til den logiske testen i excel som IF k = 6 Så Exit Sub .

Kode:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Så snart k-verdien blir 6, vil den ignorere alle kodene og avslutte celler (k, 1). Verdi = k Next k End Under 

Kjør nå koden linje for linje. Trykk på F8-tasten for å starte prosedyren.

Per nå er k-verdien null.

For å endre k-verdien til 1, trykk F8-tasten en gang til.

Så k-verdien er 1, koden fortsetter å kjøre og vil sette inn 1 i cellen A1. Slik fortsetter du å løpe til verdien til k blir 6.

Nå er verdien på k 6 og kodelinjen er i ferd med å utføre vår logiske test for å avslutte underprosedyren. Hvis jeg trykker på F8-tasten en gang til, avslutter den bare hele underprosedyren.

Som vi kan se har det markert ordet “Exit Sub” . Når du trykker på F8-tasten, vil den avslutte underprosedyren uten å gå til ordet "End Sub" .

Eksempel 2 - Ved feil Gå ut av underprosedyren

Vi kan også gå ut av underprosedyren når vi får feilverdiene. Vurder for eksempel dataene nedenfor for å dele nummeret 1 fra nummer 2.

Nedenfor er koden for å få inndelingen av to tall.

Kode:

 Delutgang_eksempel2 () Dim k så lenge for k = 2 til 9 celler (k, 3). Verdi = celler (k, 1). Verdi / celler (k, 2). Verdi neste k slutt sub 

Som vi vet kan vi ikke dele noe tall med null. Så hvis vi prøver å gjøre det, får vi feilen som Run Time Error '11': Division By Zero.

For å unngå dette så snart vi støter på en feil, vil jeg nevne makroen min for å avslutte underprosedyren med umiddelbar virkning. Koden nedenfor er et slikt tilfelle.

Kode:

 Sub Exit_Example2 () Dim k så lenge for k = 2 til 9 på feil Gå til ErrorHandler-celler (k, 3) .Value = Cells (k, 1). Value / Cells (k, 2). Value Next k ErrorHandler: Exit Sub Slutt Sub 

I eksemplet ovenfor har jeg nevnt utsagnet “On Error Goto ErrorHandler”. Her er ordet ErrorHandler etiketten jeg har tildelt. Hvis du kan se nederst i koden, har jeg nevnt etiketten som

ErrorHandler: Avslutt sub 

Så snart koden støter på en feil, vil den skyve koden for å hoppe til etiketten, og etiketten har "Exit Sub" -uttalelsen, så vil også avslutte underprosedyren.

Nå skal jeg kjøre koden, den vil beregne divisjonen til den finner en feil.

Som du kan se i cellen C7, har det oppstått en feil som "Division by Zero", så den har gått ut av underprosedyren. Uten å informere brukeren om å avslutte underprosedyren er alltid en farlig ting. For å informere brukeren om feilen kan vi inkludere en liten meldingsboks.

Kode:

 Sub Exit_Example2 () Dim k så lenge for k = 2 til 9 på feil Gå til ErrorHandlerceller (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Feil har oppstått og feilen er: "& vbNewLine & Err. Description Exit Sub End Sub 

Ovennevnte kode vil vise feilmeldingen og deretter avslutte underprosedyren. Mens du kjører kode hvis det oppstår en feil, vil den vise meldingsboksen i VBA som nedenfor.

Dette er mer en pålitelig måte å avslutte underprosedyren på.