Returnare VBA - Cum se folosește declarația de returnare GoSub în VBA?

Declarație de returnare Excel VBA

VBA este minunat și un salvator pentru cei care cunosc intrarea și ieșirea din codificarea VBA. Poate economisi tone de timp la locul de muncă. În articolele noastre anterioare, am discutat multe lucruri și concepte despre revenirea VBA. Un astfel de concept este declarația GoSub Return. În acest articol, vă vom prezenta aceste concepte.

Ce este declarația de returnare GoSub?

Declarația „Go Sub” înseamnă că va merge la linia de cod indicată de etichetă prin nume și efectuează un set specific al sarcinii până când găsește declarația „Return”.

Acest lucru este similar cu declarația de gestionare a erorilor „Etichetă GoTo”, dar ceea ce face „GoSub Return” este că va reveni la următoarea linie de cod, mai degrabă decât să continue de la numele etichetei.

Mai jos este sintaxa declarației VBA GoSub Return.

GoSub (Nume etichetă)  … Linie de cod  (Nume etichetă):  … Linie de cod pentru a efectua sarcina

Știu că este greu de înțeles din citirea sintaxei, dar folosind exemplul, este posibil să înțelegeți conceptul.

Înainte de a merge la exemple, permiteți-mi să spun câteva lucruri despre această afirmație.

  • Instrucțiunea GoSub apelează subrutina în VBA, care este denumită de o etichetă din aceeași rutină sau funcție.
  • Atât GoSub, cât și Return trebuie să se afle în aceeași procedură. Nu putem apela altă macrocomandă de subrutină aici.
  • Puteți introduce orice număr de declarații GoSub Return.
  • O declarație de returnare va continua executarea codului de unde a rămas înainte de a sări în subprocederea indicată de un nume de etichetă.

Cum se utilizează declarația de returnare GoSub în VBA?

Exemplul nr. 1

Pentru a înțelege utilizarea acestei afirmații, uitați-vă mai întâi la codul de mai jos. Mai târziu îți voi explica codul rând cu rând.

Cod:

Sub Go_Sub_Return () GoSub Macro1 'Label Name1 GoSub Macro2' Label Name2 GoSub Macro3 'Label Name3 Exit Sub Macro1: MsgBox "Acum rulează Macro1" Returnează Macro2: MsgBox "Acum rulează Macro2" Returnează Macro3: MsgBox "Acum rulează Macro3" Returnează Sub Sub

Pentru a înțelege acest cod, să rulăm codul rând cu rând apăsând tasta F8. La prima apăsare a tastei F8, va iniția executarea macro.

Acum apăsați încă o dată tasta F8 pentru a merge la următoarea linie.

Știm cu toții că macro-ul va rula codul rând cu rând, dar dacă apăsați tasta F8, aceasta nu va trece la linia următoare; mai degrabă, funcționează diferit.

A trecut la eticheta denumită „Macro1”, deoarece în declarația anterioară „GoSub”, am instruit macro-ul să meargă la numele etichetei subprocedurii „Macro1”, deci, în consecință, a sărit la numele etichetei respective.

Acum, apăsând tasta F8, macro-ul Excel va executa eticheta „Macro1” sarcină de a afișa rezultatul în caseta de mesaj.

Faceți clic pe Ok din caseta de mesaj pentru a reveni la fereastra de codare.

Acum pusese în evidență declarația „Return”. Dacă mai apăsați tasta F8 încă o dată, ceea ce va face este că va „reveni înapoi” la linia de cod anterioară înainte de a trece la numele etichetei.

Ultima dată a executat codul „GoSub Macro1” și a efectuat numele etichetei „Macro1”. Deoarece am menționat declarația „Return”, aceasta revine la următoarea linie de cod, adică

„GoSub Macro2”

Ceea ce spune declarația este, „du-te la eticheta numită Macro2”. În cele de mai jos pentru eticheta „Macro2”, am menționat un set specific de sarcini.

Acum vom primi a doua sarcină de subprocedură de a arăta valoarea în caseta de mesaj.

Acum faceți clic pe, Ok. Va evidenția a doua declarație „Return”.

Acum, după ce faceți clic pe tasta F8, acesta va reveni la următoarea linie de cod înainte de a reveni la eticheta „Macro2”. Acum va evidenția „GoSub Macro3”.

Acum va merge la eticheta „Macro3”, apăsați tasta F8.

Acum va fi executată a treia sarcină de etichetare.

Acum faceți clic pe, OK. Se va evidenția declarația „Return”.

Acum apăsați tasta F8 încă o dată; va sări înapoi la linia de cod „Exit Sub”.

No, it will exit the subroutine. It is necessary to add the word “Exit Sub” otherwise, and it will encounter an error.

Example #2

Now take a look at one more example of using the GoSub Return statement.

Code:

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 If Exit Sub Division: MsgBox Num / 5 Return End Sub

This code will ask you to enter the number which is>10. If the number is>10, then it will perform the task of dividing it by 5 (Label Name is “Division”), or else it will show the message as “Number is less than 10”.

Things to Remember

  • Numele etichetei trebuie să fie același în declarația GoSub și Return, iar în declarația return numele etichetei trebuie să fie urmat de două puncte (:).
  • Utilizați întotdeauna Exit Sub în VBA după ce toate declarațiile de returnare sunt făcute pentru a evita mesajul de eroare.

Articole interesante...