Връщане на VBA - Как да използвам изявлението за връщане на GoSub във VBA?

Декларация за връщане на Excel VBA

VBA е прекрасна и спасителна програма за тези, които знаят кода на VBA и извън него. Може да спести много време на нашето работно място. В нашите по-ранни статии обсъдихме много неща и концепции за връщане на VBA. Една такава концепция е изявлението GoSub Return. В тази статия ще ви запознаем с тези понятия.

Какво представлява декларацията за връщане на GoSub?

Изразът „Go Sub“ означава, че ще премине към реда на кода, посочен с етикет чрез име и изпълнява специфичен набор от задачата, докато намери израза „Return“.

Това е подобно на изявлението за обработка на грешки „GoTo Label“, но това, което прави „GoSub Return“ е, че ще се върне към следващия ред на код, вместо да продължи от името на етикета.

По-долу е синтаксисът на оператора VBA GoSub Return.

GoSub (Име на етикета)  … Линия на кода  (Име на етикета):  … Линия на кода за изпълнение на задачата

Знам, че е трудно да се разбере от четенето на синтаксиса, но използвайки примера, може да сте в състояние да разберете концепцията.

Преди да премина към примери, позволете ми да разкажа няколко неща за това твърдение.

  • Операторът GoSub извиква подпрограма във VBA, която се именува с етикет в рамките на същата рутина или функция.
  • Както GoSub, така и Return трябва да бъдат в рамките на една и съща процедура. Тук не можем да извикаме друга макропрограма.
  • Можете да въведете произволен брой GoSub Return оператори.
  • Изявлението за връщане ще продължи изпълнението на кода от мястото, където е спрял, преди да премине към подпроцедурата, посочена с име на етикет.

Как да използвам изявлението за връщане на GoSub във VBA?

Пример # 1

За да разберете как се използва това изявление, първо разгледайте кода по-долу. По-късно ще ви обясня кода ред по ред.

Код:

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

За да разберем този код, нека пуснем кода ред по ред, като натиснем клавиша F8. При първо натискане на клавиша F8, той ще стартира стартирания макрос.

Сега натиснете клавиша F8 още веднъж, за да преминете към следващия ред.

Всички знаем, че макросът ще изпълнява кода ред по ред, но ако натиснете клавиша F8, той няма да премине към следващия ред; по-скоро работи по различен начин.

Той е скочил до етикета, наречен „Macro1“, това е така, защото в предишното изявление „GoSub“, ние сме инструктирали макроса да премине към името на етикета на подпроцедурата „Macro1“, така че съответно той е скочил до съответното име на етикета.

Сега чрез натискане на клавиша F8 макросът на Excel ще изпълни задачата на етикета „Macro1“ за показване на резултата в полето за съобщение.

Щракнете върху Ok на полето за съобщение, за да се върнете в прозореца за кодиране.

Сега беше подчертало изявлението „Завръщане“. Ако натиснете клавиша F8 още веднъж, това, което ще направи, е да се върне обратно към предишния ред код, преди да премине към името на етикета.

Последният път изпълни кода „GoSub Macro1“ и изпълни задачата с името на етикета „Macro1“. Тъй като споменахме оператора „Return“, той се връща към следващия ред на кода, т.е.

„GoSub Macro2“

Това, което казва изявлението, е, "отидете на етикет, наречен Macro2". По-долу за етикета „Macro2“ споменах конкретен набор от задачи.

Сега ще получим втората задача на подпроцедурата да показва стойност в полето за съобщения.

Сега кликнете върху, добре. Той ще подчертае второто твърдение „Връщане“.

След като щракнете върху клавиша F8, той ще се върне към следващия ред код, преди да се върне към етикета „Macro2“. Сега ще подчертае „GoSub Macro3“.

Сега ще премине към етикета “Macro3”, натиснете клавиша F8.

Сега ще бъде изпълнена задачата с трети етикет.

Сега кликнете върху, OK. Той ще подчертае изявлението „Връщане“.

Сега натиснете клавиша F8 още веднъж; той ще се върне към реда на кода „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

  • Името на етикета трябва да бъде едно и също в оператора GoSub и Return, а в оператора return името на етикета трябва да бъде последвано от двоеточие (:).
  • Винаги използвайте Exit Sub във VBA, след като са направени всички оператори за връщане, за да се избегне съобщението за грешка.

Интересни статии...