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

Innholdsfortegnelse

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 '… Exit Sub' Gå ut av Sub uten å utføre flere kodelinjer under '…' Denne koden vil bli ignorert '… End Sub

Eksempler

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.

Jeg blir nødt til å 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 på F8-tasten en gang til.

Så k-verdien er 1, koden fortsetter å kjøre og vil sette inn 1 i cellen A1. Fortsett å løpe sløyfen 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, vil det bare gå hele underprosedyren.

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

Eksempel 2 - Ved feil Avslutt 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, vil vi få 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 ErrorHandlerceller (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 merket som

ErrorHandler: Avslutt sub

Så snart koden støter på en feil, vil den skyve koden for å hoppe til etiketten, og merket har utsagnet "Exit Sub" slik at det vil gå ut av 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 "Divisjon av null", så den har gått ut av underprosedyren. Uten å informere brukeren om å avslutte underprosedyren er alltid en farlig ting. For å varsle 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. Hvis en feil oppstår mens du kjører kode, vil den vise meldingsboksen i VBA som nedenfor.

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

Interessante artikler...