VBA Retur

Excel VBA Return Statement

VBA är underbart och en livräddare för dem som känner till och från VBA-kodning, det kan spara massor av tid på vår arbetsplats. I våra tidigare artiklar har vi diskuterat många saker och begrepp med VBA-retur. Ett sådant koncept är GoSub Return-uttalandet. I den här artikeln presenterar vi dig för dessa begrepp.

Vad är GoSub Return Statement?

Uttrycket "Go Sub" betyder att det kommer att gå till kodraden som anges med etiketten genom namn och utför en specifik uppsättning av uppgiften tills den hittar uttalandet "Return".

Detta liknar påståendet "GoTo Label" för felhanteraren, men vad "GoSub Return" gör är att det återgår till nästa rad i stället för att fortsätta från etikettnamn.

Nedan är syntaxen för VBA GoSub Return-uttalandet.

GoSub [Etikettnamn] ... .. Kodrad [Etikettnamn ]: … .. Kodrad för att utföra uppgiften

Jag vet att det är svårt att förstå från att läsa syntaxen, men med hjälp av exemplet kanske du kan förstå konceptet.

Innan jag går till exempel, låt mig berätta några saker om detta uttalande.

  • GoSub-uttalande anropar subrutin i vba som namnges av en etikett inom samma rutin eller funktion.
  • Både GoSub och Return bör ligga inom samma procedur, vi kan inte anropa ett annat subrutinmakro här.
  • Du kan införa valfritt antal GoSub Return-uttalanden.
  • En returuttalande kommer att fortsätta körningen av koden från vilken den slutade innan den hoppade till underproceduren som anges med ett etikettnamn.

Hur använder jag GoSub Return Statement i VBA?

Du kan ladda ner denna VBA Return Excel-mall här - VBA Return Excel-mall

Exempel nr 1

För att förstå användningen av detta uttalande, se först på koden nedan, senare kommer jag att förklara koden rad för rad.

Koda:

 Sub Go_Sub_Return () GoSub Macro1 'Etikettnamn1 GoSub Macro2' Etikettnamn2 GoSub Macro3 'Etikettnamn3 Avsluta Sub Macro1: MsgBox "Nu kör Macro1" Return Macro2: MsgBox "Nu kör Macro2" Return Macro3: MsgBox "Nu kör Macro3" Return End Sub 

För att förstå den här koden kan vi köra koden rad för rad genom att trycka på F8-tangenten. När du trycker på F8-tangenten första gången startar det att makro körs.

Tryck nu på F8-tangenten en gång till för att gå till nästa rad.

Vi vet alla att makro kommer att köra koden rad för rad, men om du trycker på F8-tangenten kommer den inte att gå till nästa rad utan det fungerar annorlunda.

Det har hoppat till etiketten som heter "Macro1", detta beror på att vi i föregående uttalande "GoSub" har instruerat makrot att gå till underprocedurnamnet "Macro1", så det har följaktligen hoppat till respektive etikettnamn.

Genom att trycka på F8-tangenten kommer excel-makrot nu att utföra etiketten "Macro1" för att visa resultatet i meddelandefältet.

Klicka på Ok i meddelandefältet för att återgå till kodningsfönstret.

Nu har det markerat "Return" -uttrycket om du trycker på F8-tangenten en gång till vad det kommer att göra är att det kommer "Return Back" till föregående kodrad innan den hoppade till etikettnamnet.

Förra gången den körde koden "GoSub Macro1" och den utförde etikettnamnet "Macro1" uppgift eftersom vi har nämnt "Return" uttalande är det tillbaka till nästa kodrad dvs

“GoSub Macro2”

Vad som står i uttalandet är att "gå till etiketten heter Macro2". Nedanför för etiketten ”Macro2” har jag nämnt en specifik uppsättning uppgifter.

Nu får vi den andra delproceduruppgiften att visa värde i meddelandefältet.

Klicka nu på Ok det markerar det andra ”Return” -uttrycket.

När du klickar på F8-tangenten återgår den till nästa kodrad innan den återgår till etiketten ”Macro2”. Nu kommer den att markera “GoSub Macro3”.

Nu går det till etiketten “Macro3”, tryck på F8-tangenten.

Nu kommer den tredje etikettuppgiften att utföras.

Klicka nu på OK, det kommer att markera "Return" uttalande.

Genom att trycka på F8-tangenten en gång till kommer den att hoppa tillbaka till kodraden "Exit Sub".

Nej, det kommer att lämna underrutinen. Det är nödvändigt att lägga till ordet ”Exit Sub” annars kommer det att stöta på ett fel.

Exempel 2

Ta nu en titt på ytterligare ett exempel på GoSub Return-uttalandet.

Koda:

 Sub Go_Sub_Return1 () Dim Num As Long Num = Application.InputBox (Prompt: = "Please enter the number here", Title: = "Divsion Number") If Num> 10 Then GoSub Division Else MsgBox "Number is less than 10" Exit Sub End vid utgång Sub Division: MsgBox Num / 5 Return End Sub 

Den här koden kommer att be dig att ange numret som är> 10, om numret är> 10 kommer det att utföra uppgiften att dela det med 5 (Etikettnamn är "Division") eller annars kommer det att visa meddelandet "Number is mindre än 10 ”.

Saker att komma ihåg

  • Etikettnamnet ska vara detsamma i GoSub- och Return-uttalandet och i returutdraget ska etikettnamnet följas av ett kolon (:).
  • Använd alltid Exit Sub i VBA efter att alla returuttalanden har gjorts för att undvika felmeddelandet.