Powrót VBA - Jak korzystać z instrukcji zwrotu GoSub w VBA?

Instrukcja zwrotu VBA programu Excel

VBA jest wspaniały i ratuje życie dla tych, którzy znają kodowanie VBA. Może zaoszczędzić mnóstwo czasu w naszym miejscu pracy. W naszych wcześniejszych artykułach omówiliśmy wiele rzeczy i koncepcji powrotu VBA. Jedną z takich koncepcji jest instrukcja GoSub Return. W tym artykule przedstawimy Ci te koncepcje.

Co to jest instrukcja zwrotu GoSub?

Instrukcja „Go Sub” oznacza, że ​​przejdzie do linii kodu wskazanej przez etykietę poprzez nazwę i wykona określony zestaw zadania, dopóki nie znajdzie instrukcji „Return”.

Jest to podobne do instrukcji obsługi błędów „GoTo Label”, ale „GoSub Return” powoduje powrót do następnego wiersza kodu zamiast kontynuowania z nazwy etykiety.

Poniżej znajduje się składnia instrukcji VBA GoSub Return.

GoSub (nazwa etykiety)  … Linia kodu  (nazwa etykiety):  … Linia kodu do wykonania zadania

Wiem, że trudno jest zrozumieć, czytając składnię, ale korzystając z przykładu, możesz zrozumieć koncepcję.

Zanim przejdę do przykładów, powiem kilka rzeczy na temat tego stwierdzenia.

  • Instrukcja GoSub wywołuje procedurę podrzędną w języku VBA, która jest nazwana etykietą w ramach tej samej procedury lub funkcji.
  • Zarówno GoSub, jak i Return powinny podlegać tej samej procedurze. Nie możemy tutaj wywołać innego makra podprogramu.
  • Możesz wprowadzić dowolną liczbę instrukcji GoSub Return.
  • Instrukcja return będzie kontynuowała wykonywanie kodu od miejsca, w którym zostało przerwane przed przejściem do podprocedury wskazanej przez nazwę etykiety.

Jak korzystać z instrukcji zwrotu GoSub w VBA?

Przykład 1

Aby zrozumieć użycie tego oświadczenia, spójrz najpierw na poniższy kod. Później wyjaśnię ci kod linijka po linijce.

Kod:

Sub Go_Sub_Return () GoSub Macro1 'Label Name1 GoSub Macro2' Label Name2 GoSub Macro3 'Label Name3 Exit Sub Macro1: MsgBox "Teraz uruchomione Macro1" Return Macro2: MsgBox "Teraz uruchomione Macro2" Return Macro3: MsgBox "Teraz uruchomione Macro3" Return End Sub

Aby zrozumieć ten kod, uruchommy kod wiersz po wierszu, naciskając klawisz F8. Pierwsze naciśnięcie klawisza F8 zainicjuje uruchamianie makra.

Teraz naciśnij klawisz F8 jeszcze raz, aby przejść do następnego wiersza.

Wszyscy wiemy, że makro będzie uruchamiać kod linia po linii, ale jeśli naciśniesz klawisz F8, nie przejdzie do następnej linii; raczej działa inaczej.

Przeskoczyło do etykiety o nazwie „Makro1”, ponieważ w poprzedniej instrukcji „GoSub” poinstruowaliśmy makro, aby przechodziło do nazwy etykiety podprocedury „Makro1”, a zatem przeskoczyło do odpowiedniej nazwy etykiety.

Teraz, naciskając klawisz F8, makro programu Excel wykona zadanie etykiety „Makro1” polegające na wyświetleniu wyniku w oknie komunikatu.

Kliknij OK w oknie komunikatu, aby powrócić do okna kodowania.

Teraz podświetlił oświadczenie „Zwrot”. Jeśli naciśniesz klawisz F8 jeszcze raz, spowoduje to „Powrót” do poprzedniego wiersza kodu, zanim skoczył do nazwy etykiety.

Ostatnim razem wykonał kod „GoSub Macro1” i wykonał zadanie z nazwą etykiety „Macro1”. Ponieważ wspomnieliśmy o instrukcji „Return”, wróciliśmy do następnej linii kodu, tj

„GoSub Macro2”

To, co mówi stwierdzenie, to „przejdź do etykiety o nazwie Macro2”. Poniżej dla etykiety „Macro2” wspomniałem o określonym zestawie zadań.

Teraz otrzymamy drugie zadanie podprocedury polegające na pokazaniu wartości w oknie komunikatu.

Teraz kliknij OK. Podświetli drugą instrukcję „Zwrot”.

Teraz po kliknięciu klawisza F8 nastąpi powrót do następnej linii kodu, zanim powróci do etykiety „Makro2”. Teraz podświetli „GoSub Macro3”.

Teraz przejdzie do etykiety „Macro3”, naciśnij klawisz F8.

Teraz trzecie zadanie etykiety zostanie wykonane.

Teraz kliknij OK. Podświetli oświadczenie „Zwrot”.

Teraz jeszcze raz naciśnij klawisz F8; przejdzie z powrotem do wiersza kodu „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

  • Nazwa etykiety powinna być taka sama w instrukcjach GoSub i Return, aw instrukcji Return nazwa etykiety powinna być zakończona dwukropkiem (:).
  • Zawsze używaj Exit Sub w języku VBA po wykonaniu wszystkich instrukcji return, aby uniknąć komunikatu o błędzie.

Interesujące artykuły...