VBA-paluu - Kuinka käyttää GoSub-palautuslauseketta VBA: ssa?

Sisällysluettelo

Excel VBA -palautuslausunto

VBA on upea ja hengenpelastaja niille, jotka tietävät VBA-koodauksen sisään ja ulos. Se voi säästää tonnia aikaa työpaikallamme. Aikaisemmissa artikkeleissamme olemme keskustelleet monista asioista ja käsitteistä VBA-tuotosta. Yksi tällainen käsite on GoSub Return -lauseke. Tässä artikkelissa esitämme sinulle nämä käsitteet.

Mikä on GoSub Return Statement?

Lauseke "Go Sub" tarkoittaa, että se siirtyy koodin riville, joka on merkitty tunnisteella nimen kautta ja suorittaa tietyn joukon tehtävää, kunnes se löytää lauseen "Return".

Tämä on samanlainen kuin virheenkäsittelijän "GoTo Label" lause, mutta mitä "GoSub Return" tekee, se palaa takaisin seuraavalle koodiriville sen sijaan, että jatkaisi tarran nimestä.

Alla on VBA GoSub Return -lausekkeen syntaksi.

GoSub (Label Name)  …  Koodirivi (Label Name) :  … Koodirivi tehtävän suorittamiseen

Tiedän, että syntaksin lukemisesta on vaikea ymmärtää, mutta esimerkin avulla voit ehkä ymmärtää käsitteen.

Ennen kuin tutustun esimerkkeihin, anna minun kertoa muutama asia tästä lausunnosta.

  • GoSub-käsky kutsuu aliohjelmaa VBA: ssa, joka on nimetty saman rutiinin tai toiminnon sisällä olevalla tarralla.
  • Sekä GoSubin että Returnin tulisi olla samassa menettelyssä. Emme voi kutsua toista alirutiinimakroa täällä.
  • Voit ottaa käyttöön minkä tahansa määrän GoSub Return -lausekkeita.
  • Palautuslauseke jatkaa koodin suorittamista siitä, mihin se jäi, ennen kuin se hyppäsi etiketin nimen osoittamaan alimenettelyyn.

Kuinka käyttää GoSub Return Statementia VBA: ssa?

Esimerkki 1

Ymmärrä tämän lauseen käyttö katsomalla ensin alla oleva koodi. Myöhemmin selitän sinulle koodin riveittäin.

Koodi:

Sub Go_Sub_Return () GoSub Macro1 'Label Name1 GoSub Macro2' Label Name2 GoSub Macro3 'Label Name3 Exit Sub Macro1: MsgBox "Now running Macro1" Return Macro2: MsgBox "Now running Macro2" Return Macro3: MsgBox "Now running Macro3" Return Sub

Ymmärrämme tämän koodin suorittamalla koodirivi riviltä painamalla F8-näppäintä. Kun F8-näppäintä painetaan ensimmäisen kerran, se käynnistää makron.

Paina nyt F8-näppäintä vielä kerran siirtyäksesi seuraavalle riville.

Me kaikki tiedämme, että makro suorittaa koodin rivi riviltä, ​​mutta jos painat F8-näppäintä, se ei siirry seuraavalle riville; pikemminkin se toimii eri tavalla.

Se on siirtynyt nimelle ”Macro1”, koska syynä on se, että edellisessä GoSub-lausekkeessa olemme ohjeistaneet makron siirtymään alimenettelyn tunnisteeseen ”Macro1”, joten vastaavasti se on siirtynyt vastaavaan etiketin nimeen.

Nyt painamalla F8-näppäintä, excel-makro suorittaa tarran ”Makro1” tehtävän näyttää tulos viestiruudussa.

Napsauta viestiruudun OK palataksesi koodausikkunaan.

Nyt se oli korostanut Palautus-lausunnon. Jos painat F8-näppäintä vielä kerran, se tekee "Palaa takaisin" edelliselle koodiriville ennen kuin se hyppää tarran nimen kohdalle.

Viime kerralla se suoritti koodin "GoSub Macro1" ja suoritti tarran nimen "Makro1" tehtävän. Koska olemme maininneet “Return” -lausekkeen, se palaa seuraavaan koodiriviin eli

"GoSub Macro2"

Se, mitä lausunnossa sanotaan, on "Macro2-niminen etiketti". Alla olevassa tarrassa ”Macro2” olen maininnut tietyn joukon tehtäviä.

Nyt saamme toisen alimenetelmän tehtävän, joka näyttää arvon viestikentässä.

Napsauta nyt, Ok. Se tuo esiin toisen “Return” -lausekkeen.

Kun napsautat F8-näppäintä, se palaa seuraavaan koodiriviin ennen kuin se palaa otsikkoon "Macro2". Nyt se korostaa “GoSub Macro3”.

Nyt se siirtyy etikettiin “Macro3”, paina F8-näppäintä.

Nyt kolmas tarratehtävä suoritetaan.

Napsauta nyt, OK. Se korostaa ”Return” -lausekkeen.

Paina nyt F8-näppäintä vielä kerran; se hyppää takaisin koodiriville "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

  • Tunnisteen nimen on oltava sama GoSub- ja Return-käskyssä, ja return-lauseessa otsikon nimen jälkeen tulee olla kaksoispiste (:).
  • Käytä aina Exit Subia VBA: ssa, kun kaikki palautuslausekkeet on tehty virheilmoituksen välttämiseksi.

Mielenkiintoisia artikkeleita...