VBA Exit Sub

Excel VBA Exit Sub-procedure

Exit Sub- instructie verlaat de subprocedure eerder dan de gedefinieerde regels met VBA-codes. Om de subprocedure te verlaten, moeten we echter een soort logische test toepassen.

Laten we dit in eenvoudige bewoordingen construeren.

 Sub Macronaam () '...' Een code hier '... Exit Sub' Verlaat de Sub zonder verdere regels code uit te voeren onder '...' Deze code wordt genegeerd '... End Sub 

Voorbeelden

U kunt deze VBA Exit Sub Excel-sjabloon hier downloaden - VBA Exit Sub Excel-sjabloon

Voorbeeld 1

Kijk voor een beter voorbeeld naar de onderstaande code.

Code:

 Sub Exit_Example1 () Dim k As Long For k = 1 tot 10 cellen (k, 1) .Value = k Next k End Sub 

De bovenstaande code voegt serienummers van 1 tot 10 in de cellen A1 tot A10 in.

Nu wil ik slechts 5 serienummers invoeren en zodra de waarde van de variabele "k" 6 wordt, wil ik de sub verlaten.

Hiervoor zal ik de logische test in Excel moeten toevoegen als IF k = 6 Then Exit Sub .

Code:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Zodra k waarde 6 wordt, zal het alle codes negeren en Cells (k, 1) verlaten. Value = k Next k End Sub 

Voer nu de code regel voor regel uit. Druk op de F8-toets om de procedure te starten.

Vanaf nu is de k-waarde nul.

Om de k-waarde te veranderen in 1, drukt u nogmaals op de F8-toets.

Dus k-waarde is 1, onze code blijft actief en zal 1 invoegen in cel A1. Blijf op deze manier de lus doorlopen totdat de waarde van k 6 wordt.

Nu is de waarde van k 6 en staat de coderegel op het punt onze logische test uit te voeren om de subprocedure te verlaten. Als ik nog een keer op de F8-toets druk, wordt alleen de hele subprocedure afgesloten.

Zoals we kunnen zien, is het woord "Exit Sub" gemarkeerd . Door op de F8-toets te drukken, wordt de subprocedure verlaten zonder naar het woord "End Sub" te gaan .

Voorbeeld # 2 - Bij een fout verlaat u de subprocedure

We kunnen de subprocedure ook verlaten als we de foutwaarden krijgen. Overweeg bijvoorbeeld de onderstaande gegevens om het getal 1 te delen door nummer 2.

Hieronder staat de code om de verdeling van twee getallen te krijgen.

Code:

 Sub Exit_Example2 () Dim k As Long For k = 2 tot 9 cellen (k, 3). Waarde = cellen (k, 1). Waarde / cellen (k, 2). Waarde volgende k einde sub 

Zoals we weten, kunnen we geen enkel getal door nul delen. Dus als we dat proberen, krijgen we de foutmelding Run Time Error '11': Division By Zero.

Om dit te voorkomen zal ik zodra we een fout tegenkomen, mijn macro vermelden om de subprocedure met onmiddellijke ingang te verlaten. De onderstaande code is zo'n geval.

Code:

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

In het bovenstaande voorbeeld heb ik de stelling "On Error Goto ErrorHandler" genoemd. Hier is het woord ErrorHandler het label dat ik heb toegewezen. Als je onderaan de code kunt zien, heb ik het label genoemd als

ErrorHandler: Exit Sub 

Dus zodra de code een fout tegenkomt, zal het code pushen om naar het label te springen en het label heeft de "Exit Sub" -instructie, dus verlaat de subprocedure.

Nu zal ik de code uitvoeren, het zal de deling berekenen totdat het een fout vindt.

Zoals je kunt zien in cel C7 is er een fout opgetreden als "Delen door nul", dus het heeft de subprocedure verlaten. Zonder de gebruiker te informeren is het verlaten van de subprocedure altijd gevaarlijk. Om de gebruiker over de fout te informeren, kunnen we een klein berichtvenster toevoegen.

Code:

 Sub Exit_Example2 () Dim k As Long For k = 2 tot 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Er is een fout opgetreden en de fout is: "& vbNewLine & Err.Description Exit Sub End Sub 

De bovenstaande code toont het foutbericht en verlaat de subprocedure. Tijdens het uitvoeren van code als er een fout optreedt, wordt het berichtvenster in VBA weergegeven, zoals hieronder.

Dit is een meer betrouwbare manier om de subprocedure te verlaten.