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

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 tehtävänjoukon, kunnes se löytää lauseen "Return".

Tämä on samanlainen kuin virheenkäsittelijän käsky "GoTo Label", mutta mitä "GoSub Return" tekee, se palaa takaisin seuraavalle koodiriville eikä jatka etiketin 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 menen esimerkkeihin, anna minun kertoa muutama asia tästä lausunnosta.

  • GoSub-käsky kutsuu aliohjelman vba: ssä, joka on nimetty saman rutiinin tai toiminnon tunnisteella.
  • Sekä GoSubin että Returnin tulisi olla saman menettelyn sisällä, emme voi kutsua toista aliohjelmamakroa 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?

Voit ladata tämän VBA Return Excel -mallin täältä - VBA Return Excel -malli

Esimerkki 1

Ymmärtääksesi tämän lauseen käytön, tarkastele ensin alla olevaa koodia, 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 

Tämän koodin ymmärtämiseksi anna koodin suorittaa rivi 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 riviltä riville, mutta jos painat F8-näppäintä, se ei siirry seuraavalle riville, vaan se toimii eri tavalla.

Se on siirtynyt otsikkoon nimeltä “Makro1”, tämä johtuu siitä, että edellisessä lausunnossa ”GoSub” olemme ohjeistaneet makroa siirtymään alimenettelyn tunnisteeseen ”Makro1”, joten vastaavasti se on siirtynyt vastaavaan etiketin nimeen.

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

Napsauta viestiruudun OK palataksesi koodausikkunaan.

Nyt se on korostanut "Return" -lausekkeen, jos painat F8-näppäintä vielä kerran, mitä se tekee, se "palaa takaisin" edelliselle koodiriville ennen kuin se hyppää etiketin nimeen.

Viime kerralla se suoritti koodin "GoSub Macro1" ja suoritti etiketin nimen "Macro1" tehtävän, koska olemme maininneet "Return" -lausekkeen, se on palannut seuraavaan koodiriviin eli

"GoSub Macro2"

Se, mitä lausunnossa sanotaan, on "Macro2: ksi nimetty etiketti". Alla olevassa tarrassa ”Macro2” olen maininnut tietyn tehtäväryhmän.

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

Napsauta nyt Ok, jolloin korostetaan toinen “Return” -lauseke.

Napsauttamalla 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" -lauseketta.

Nyt painamalla F8-näppäintä vielä kerran, se siirtyy takaisin koodiriville "Exit Sub".

Ei, se poistuu aliohjelmasta. On välttämätöntä lisätä sana ”Exit Sub”, muuten siinä tapahtuu virhe.

Esimerkki 2

Katso nyt vielä yksi esimerkki GoSub Return -lausekkeen käytöstä.

Koodi:

 Sub Go_Sub_Return1 () Dim Num As Long Num = Application.InputBox (Kysy: = "Anna numero tähän", Otsikko: = "Divsion numero") Jos Num> 10, niin GoSub-divisioonan muu MsgBox "numero on alle 10" Exit Alipääte, jos poistut aliosastosta: MsgBox Num / 5 Palauta loppuala 

Tämä koodi pyytää sinua syöttämään numeron, joka on> 10, jos numero on> 10, se suorittaa tehtävän jakamalla se 5: llä (Label Name on “Division”) tai muuten se näyttää viestin nimellä “Number is alle 10 ”.

Muistettavaa

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