VBA Exit Sub | Afslut VBA-underprocedure, hvis betingelserne ikke er opfyldt

Excel VBA Afslut underprocedure

Exit Sub- sætning forlader underproceduren tidligere end de definerede linjer i VBA-koder. For at afslutte underproceduren skal vi dog anvende en slags logisk test.

Lad os konstruere dette i enkle vendinger.

 Undermakronavn () '...' En eller anden kode her '... Afslut Under' Afslut underen uden at udføre yderligere kodelinjer under '...' Denne kode ignoreres '... Afslut under 

Eksempler

Du kan downloade denne VBA Exit Sub Excel-skabelon her - VBA Exit Sub Excel-skabelon

Eksempel nr. 1

For et bedre eksempel se nedenstående kode.

Kode:

 Underudgang_eksempel1 () Dim k så længe for k = 1 til 10 celler (k, 1). Værdi = k næste k slut sub 

Ovenstående kode indsætter serienumre fra 1 til 10 i cellerne A1 til A10.

Nu vil jeg kun indsætte 5 serienumre, og så snart værdien af ​​variablen “k” bliver 6, vil jeg afslutte underdelen.

Til dette bliver jeg nødt til at tilføje den logiske test i excel som IF k = 6 Derefter Exit Sub .

Kode:

 Sub Exit_Example1 () Dim k så længe For k = 1 til 10 Hvis k = 6 Afslut derefter Sub 'Så snart k-værdien bliver 6, ignorerer den alle koder og afslutter celler (k, 1). Værdi = k Næste k End Sub 

Kør nu koden linje for linje. Tryk på F8-tasten for at starte proceduren.

Fra nu af er k-værdien nul.

For at ændre k-værdien til 1 skal du trykke på F8-tasten en gang til.

Så k-værdien er 1, vores kode fortsætter og kører 1 i cellen A1. Fortsæt med at køre sløjfen, indtil værdien af ​​k bliver 6.

Nu er værdien af ​​k 6 og kodelinjen er ved at udføre vores logiske test for at afslutte underproceduren. Hvis jeg trykker på F8-tasten en gang til, forlader den kun hele underproceduren.

Som vi kan se, har det fremhævet ordet “Exit Sub” . Når du trykker på F8-tasten, forlader den underproceduren uden at gå til ordet “End Sub” .

Eksempel 2 - Ved fejl Afslut underproceduren

Vi kan også afslutte underproceduren, når vi får fejlværdierne. Overvej f.eks. Nedenstående data for at dividere nummeret 1 fra nummer 2.

Nedenfor er koden for at få delingen af ​​to tal.

Kode:

 Underudgang_eksempel2 () Dim k så længe for k = 2 til 9 celler (k, 3). Værdi = celler (k, 1). Værdi / celler (k, 2). Værdi næste k slut sub 

Som vi ved, kan vi ikke dele noget tal med nul. Så hvis vi forsøger at gøre det, får vi fejlen som Run Time Error '11': Division By Zero.

For at undgå dette, så snart vi støder på en fejl, vil jeg nævne min makro for at afslutte underproceduren med øjeblikkelig virkning. Nedenstående kode er et sådant tilfælde.

Kode:

 Sub Exit_Example2 () Dim k så længe for k = 2 til 9 On Error Gå til ErrorHandler-celler (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Value Next k ErrorHandler: Exit Sub Afslut sub 

I ovenstående eksempel har jeg nævnt udsagnet “On Error Goto ErrorHandler”. Her er ordet ErrorHandler den etiket, jeg har tildelt. Hvis du kan se i bunden af ​​koden, har jeg nævnt etiketten som

ErrorHandler: Afslut sub 

Så snart koden støder på en fejl, vil den skubbe kode for at springe til etiketten, og etiketten har "Exit Sub" -erklæringen, så forlader underproceduren.

Nu kører jeg koden, den beregner divisionen, indtil den finder en fejl.

Som du kan se i cellen C7, har den stødt på en fejl som "Division by Zero", så den er ude af underproceduren. Uden at informere brugeren om at forlade underproceduren er altid en farlig ting. For at informere brugeren om fejlen kan vi inkludere en lille meddelelsesboks.

Kode:

 Under Exit_Example2 () Dim k så længe for k = 2 til 9 på fejl Gå til ErrorHandler-celler (k, 3) .Værdi = Celler (k, 1) .Værdi / celler (k, 2) .Værdi Næste k ErrorHandler: MsgBox " Der er opstået en fejl, og fejlen er: "& vbNewLine & Err.Description Exit Sub End Sub 

Ovenstående kode viser fejlmeddelelsen og afslut derefter underproceduren. Under kørsel af kode, hvis der opstår en fejl, vises meddelelsesfeltet i VBA som nedenfor.

Dette er mere en pålidelig måde at afslutte underproceduren på.