VBA-terugkeer

Excel VBA-retourverklaring

VBA is geweldig en een redder in nood voor degenen die de in- en uitgang van VBA-codering kennen, het kan veel tijd besparen op onze werkplek. In onze eerdere artikelen hebben we veel dingen en concepten van VBA-terugkeer besproken. Een voorbeeld van zo'n concept is de GoSub Return-instructie. In dit artikel laten we u kennismaken met deze concepten.

Wat is een GoSub-retourverklaring?

De instructie "Go Sub" betekent dat het naar de regel code gaat die wordt aangegeven door label via naam en een specifieke set van de taak uitvoert totdat het de instructie "Return" vindt.

Dit is vergelijkbaar met de instructie "GoTo Label" van de foutafhandelaar, maar wat "GoSub Return" doet, is dat het teruggaat naar de volgende regel code in plaats van verder te gaan vanaf de labelnaam.

Hieronder vindt u de syntaxis van de VBA GoSub Return-instructie.

GoSub [Labelnaam] … .. Regel code [ Labelnaam ]: … .. Regel code om de taak uit te voeren

Ik weet dat het moeilijk te begrijpen is door de syntaxis te lezen, maar door het voorbeeld te gebruiken, kun je het concept misschien begrijpen.

Voordat ik naar voorbeelden ga, wil ik een paar dingen over deze verklaring vertellen.

  • GoSub-instructie roept subroutine aan in vba die wordt genoemd door een label binnen dezelfde routine of functie.
  • Zowel GoSub als Return moeten binnen dezelfde procedure vallen, we kunnen hier geen andere subroutinemacro aanroepen.
  • U kunt een onbeperkt aantal GoSub Return-instructies invoeren.
  • Een return-instructie zet de uitvoering van de code voort waar hij was gebleven voordat hij naar de subprocedure sprong die wordt aangegeven door een labelnaam.

Hoe gebruik je GoSub Return Statement in VBA?

U kunt deze VBA Return Excel-sjabloon hier downloaden - VBA Return Excel-sjabloon

Voorbeeld 1

Om het gebruik van deze verklaring te begrijpen, kijk eerst naar de onderstaande code, later zal ik u de code regel voor regel uitleggen.

Code:

 Sub Go_Sub_Return () GoSub Macro1 'Labelnaam1 GoSub Macro2' Labelnaam2 GoSub Macro3 'Labelnaam3 Exit Sub Macro1: MsgBox "Wordt nu Macro1 uitgevoerd" Return Macro2: MsgBox "Nu Macro2 wordt uitgevoerd" Return Macro3: MsgBox "Nu Macro3 wordt uitgevoerd" Return End Sub 

Om deze code te begrijpen, laten we de code regel voor regel uitvoeren door op de F8-toets te drukken. Als u voor de eerste keer op de F8-toets drukt, wordt de macro gestart.

Druk nu nog een keer op F8 om naar de volgende regel te gaan.

We weten allemaal dat de macro de code regel voor regel zal uitvoeren, maar als u op de F8-toets drukt, gaat het niet naar de volgende regel, maar werkt het anders.

Het is naar het label met de naam "Macro1" gesprongen, dit komt omdat we in de vorige instructie "GoSub" de macro de instructie hebben gegeven om naar de subprocedure labelnaam "Macro1" te gaan, dus dienovereenkomstig is het naar de respectievelijke labelnaam gesprongen.

Door nu op de F8-toets te drukken, zal Excel-macro de label "Macro1" -taak uitvoeren om het resultaat in het berichtvenster weer te geven.

Klik op Ok in het berichtvenster om terug te keren naar het coderingsvenster.

Nu heeft het de "Return" -instructie gemarkeerd als je nog een keer op de F8-toets drukt, wat het zal doen is dat het "Terugkeert" naar de vorige regel code voordat het naar de labelnaam sprong.

De laatste keer dat het de code “GoSub Macro1” uitvoerde en het de labelnaam “Macro1” -taak uitvoerde sinds we de “Return” -instructie hebben genoemd, is het terug naar de volgende regel code, dwz

"GoSub Macro2"

Wat de verklaring zegt, is: "go-to label genaamd Macro2". In het onderstaande voor label "Macro2", heb ik een specifieke set taken genoemd.

Nu krijgen we de tweede subprocedure-taak om waarde in het berichtvenster te tonen.

Klik nu op Ok, het zal de tweede "Return" -verklaring markeren.

Door nu op de F8-toets te klikken, keert het terug naar de volgende regel code voordat het terugkeert naar het label "Macro2". Nu zal het "GoSub Macro3" markeren.

Nu gaat het naar het label "Macro3", druk op de F8-toets.

Nu wordt de derde labeltaak uitgevoerd.

Klik nu op OK, het zal de "Return" -verklaring markeren.

Druk nu nogmaals op de F8-toets om terug te springen naar de regel met code "Exit Sub".

Nee, het verlaat de subroutine. Het is noodzakelijk om het woord "Exit Sub" toe te voegen, anders zal er een fout optreden.

Voorbeeld # 2

Bekijk nu nog een voorbeeld van het gebruik van de GoSub Return-instructie.

Code:

 Sub Go_Sub_Return1 () Dim Num As Long Num = Application.InputBox (Prompt: = "Voer hier het nummer in", Title: = "Divsion Number") Als Num> 10 Dan GoSub Division Else MsgBox "Number is kleiner dan 10" Exit Sub End If Exit Sub Division: MsgBox Num / 5 Return End Sub 

Deze code vraagt ​​u om het nummer in te voeren dat> 10 is, als het nummer> 10 is, zal het de taak uitvoeren om het te delen door 5 (labelnaam is "Divisie") of anders wordt het bericht weergegeven als "Nummer is minder dan 10".

Dingen om te onthouden

  • Labelnaam moet hetzelfde zijn in de GoSub- en Return-instructie en in de retourinstructie moet de labelnaam worden gevolgd door een dubbele punt (:).
  • Gebruik altijd Exit Sub in VBA nadat alle retourinstructies zijn gedaan om het foutbericht te voorkomen.