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.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba_.png.webp)
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.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__2.png.webp)
Teraz naciśnij klawisz F8 jeszcze raz, aby przejść do następnego wiersza.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__3.png.webp)
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.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__4.png.webp)
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.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba_.gif)
Kliknij OK w oknie komunikatu, aby powrócić do okna kodowania.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__5.png.webp)
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.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__6.png.webp)
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ń.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__7.png.webp)
Teraz otrzymamy drugie zadanie podprocedury polegające na pokazaniu wartości w oknie komunikatu.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__2.gif)
Teraz kliknij OK. Podświetli drugą instrukcję „Zwrot”.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__8.png.webp)
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”.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__9.png.webp)
Teraz przejdzie do etykiety „Macro3”, naciśnij klawisz F8.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__10.png.webp)
Teraz trzecie zadanie etykiety zostanie wykonane.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__3.gif)
Teraz kliknij OK. Podświetli oświadczenie „Zwrot”.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__11.png.webp)
Teraz jeszcze raz naciśnij klawisz F8; przejdzie z powrotem do wiersza kodu „Exit Sub”.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__12.png.webp)
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”.
![](https://cdn.know-base.net/2170757/vba_return_how_to_use_gosub_return_statement_in_vba__4.gif)
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.