Podprogram Excel VBA: Jak wywołać sub w VBA z przykładem
⚡ Inteligentne podsumowanie
Podprogramy VBA w programie Excel grupują blok kodu, który wykonuje zadanie bez zwracania wartości. Ta strona omawia zasady nazewnictwa, składnię funkcji Sub, wywoływanie funkcji Sub z przycisku polecenia oraz różnice między funkcją Sub a funkcją.

Co to jest podprogram w VBA?
A Podprogram w VBA to fragment kodu, który wykonuje określone zadanie opisane w kodzie, ale nie zwraca wyniku ani wartości. Podprogramy służą do dzielenia dużych fragmentów kodu na małe, łatwe do zarządzania części. Podprogramy można przywoływać wielokrotnie z dowolnego miejsca w programie.
Załóżmy, że utworzyłeś interfejs użytkownika z polami tekstowymi do akceptowania danych wejściowych użytkownika. Możesz utworzyć podprocedurę, która czyści zawartość pól tekstowych. Podprocedura wywołania VBA jest odpowiednia w takim scenariuszu, ponieważ nie chcesz zwracać żadnych wyników.
Po co używać podprogramów
- Podziel kod na mały, łatwy do zarządzania kod: Przeciętny program komputerowy ma tysiące i tysiące linii kodu źródłowego. To wprowadza złożoność. Podprogramy pomagają rozwiązać ten problem, dzieląc program na małe, łatwe do opanowania fragmenty kodu.
- Code wielokrotnego użytku. Załóżmy, że masz program, który potrzebuje dostępu do bazy danych, prawie wszystkie okna w programie będą musiały wchodzić w interakcję z bazą danych. Zamiast pisać oddzielny kod dla tych okien, możesz utworzyć funkcję, która obsługuje wszystkie interakcje z bazą danych. Następnie możesz ją wywołać z dowolnego okna, które chcesz.
- Podprogramy i funkcje są samodokumentujące. Załóżmy, że masz funkcję obliczLoanInterest i inną funkcję connectToDatabase. Wystarczy spojrzeć na nazwę podprogramu/funkcji, a programista będzie w stanie stwierdzić, co robi program.
Przed zapisaniem nazwy kompilator oczekuje, że będzie ona zgodna z krótkim zestawem reguł.
Zasady nazewnictwa podprogramów i funkcji
Aby korzystać z podprogramów i funkcji, należy przestrzegać zestawu zasad.
- Nazwa podprogramu lub funkcji wywołania VBA nie może zawierać spacji
- Nazwa podrzędna wywołania Excel VBA lub nazwa funkcji powinna zaczynać się od litery lub znaku podkreślenia. Nie może zaczynać się od cyfry ani znaku specjalnego
- Nazwa podprogramu lub funkcji nie może być słowem kluczowym. Słowo kluczowe to słowo, które ma specjalne znaczenie w VBA. Słowa takie jak Private, Sub, Function i End itp. są przykładami słów kluczowych. Kompilator używa ich do określonych zadań.
Po wybraniu prawidłowej nazwy deklaracja sama w sobie podlega ustalonemu wzorowi.
Składnia podprogramu VBA
Aby skorzystać z tego przykładu, musisz włączyć kartę Deweloper w programie Excel. Jeśli nie wiesz, jak włączyć kartę Deweloper, przeczytaj samouczek dalej Kontrolki VBA w programie Excel
TUTAJ w składni,
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
Wyjaśnienie składni
| Code | Działania |
|---|---|
|
|
|
|
|
|
Poniższa podprocedura przyjmuje imię i nazwisko i wyświetla je w oknie komunikatu.
Teraz zaprogramujemy i wykonamy tę podprocedurę. Zobaczmy to.
Jak wywołać Sub w VBA
Poniżej znajduje się krok po kroku proces wywoływania Sub w VBA:
- Zaprojektuj interfejs użytkownika i ustaw właściwości kontrolek użytkownika.
- Dodaj podprogram
- Zapisz kod zdarzenia kliknięcia dla przycisku polecenia wywołującego podprogram
- Przetestuj aplikację
Krok 1) Interfejs użytkownika
Zaprojektuj interfejs użytkownika, jak pokazano na obrazku poniżej.
Ustaw następujące właściwości. Właściwości, które ustawiamy:
| S / N | Control: | Właściwość | Wartość: |
|---|---|---|---|
| 1 | Przycisk Polecenia1 | Imię i nazwisko | btnDisplayFullName |
| 2 | Podpis | Pełna nazwa Podprogram |
Twój interfejs powinien teraz wyglądać następująco.
Krok 2) Dodaj podprogram
- Naciśnij Alt + F11, aby otworzyć okno kodu
- Dodaj następującą podprocedurę
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
TUTAJ w kodzie,
| Code | Akcje |
|---|---|
|
|
|
|
|
|
Krok 3) Wywołanie podprogramu
Wywołanie podprogramu ze zdarzenia kliknięcia przycisku polecenia.
- Kliknij prawym przyciskiem myszy przycisk polecenia, jak pokazano na poniższym obrazku. Wybierz opcję „Widok”. Code.
- Otworzy się edytor kodu
Dodaj następujący kod w edytorze kodu dla zdarzenia kliknięcia przycisku polecenia btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
Twoje okno kodu powinno teraz wyglądać następująco
Zapisz zmiany i zamknij okno kodu.
Krok 4) Testowanie kodu
Na pasku narzędzi programisty wyłącz tryb projektowania. Jak pokazano niżej.
Krok 5) Kliknij przycisk polecenia „Podprogram o pełnej nazwie”.
Otrzymasz następujące wyniki
Przycisk jest wygodny, ale nie jest to jedyny sposób uruchomienia podprogramu i w trakcie programowania rzadko jest to najszybszy sposób.
Jak uruchomić podprogram bez przycisku
Podczas pisania kodu dodanie kontrolki do arkusza tylko po to, by przetestować podprocedurę, to strata czasu. VBA oferuje cztery inne sposoby uruchomienia takiej kontrolki, a każdy z nich pasuje do innego momentu cyklu programowania.
- Naciśnij F5 w edytorze: Umieść kursor w dowolnym miejscu w Sub i naciśnij F5. Zostanie on uruchomiony natychmiast. Działa to tylko wtedy, gdy Sub nie przyjmuje żadnych argumentów, ponieważ VBA nie ma żadnych wartości do podania.
- Przejdź dalej za pomocą F8: Ten sam przebieg, linia po linii, dzięki czemu możesz obserwować zmiany każdej zmiennej w oknie zmiennych lokalnych. Użyj go, gdy wynik jest błędny i chcesz sprawdzić, gdzie go szukać.
- Użyj okna dialogowego Makra: Na karcie Deweloper kliknij Makra, wybierz nazwę i kliknij Uruchom. Na tej liście pojawiają się tylko publiczne subskrypcje bez argumentów, dlatego subskrypcja pomocnicza jest zazwyczaj deklarowana jako prywatna.
- Nazwij to z innego Suba: Ta metoda jest używana w przypadku dowolnego Sub przyjmującego argumenty i to na niej opiera się przycisk polecenia powyżej.
Ostatnia opcja ma dwie akceptowane formy. Wpisanie nazwy i samych argumentów działa, podobnie jak jawne użycie słowa kluczowego Call, ale reguła dotycząca nawiasów jest różna w obu przypadkach.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
Obie linijki robią dokładnie to samo. Mieszanie obu form poprzez pisanie nawiasów bez słowa kluczowego Call jest najczęstszą przyczyną błędu kompilacji „Expected: =”, gdy Sub przyjmuje więcej niż jeden argument.
Różnica między funkcją podrzędną a funkcją w języku VBA
Sub i Function to dwa typy procedur w VBA, a początkujący często wybierają niewłaściwą. Decydujące pytanie jest proste: czy kod wywołujący potrzebuje wartości zwrotnej?
| Cecha | Podłoże | Funkcjonować |
|---|---|---|
| Zwraca wartość | Nie | Tak, przypisano do nazwy funkcji |
| Zadeklarowano z | Sub … Koniec Sub | Funkcja … Koniec funkcji |
| Nazywany jako | Oświadczenie w osobnym zdaniu | Część wyrażenia, na przykład x = myFunc(2) |
| Można używać w komórce arkusza kalkulacyjnego | Nie | Tak, jako funkcja zdefiniowana przez użytkownika |
| Typowe zastosowanie | Sformatuj arkusz, wyczyść dane wejściowe, wyświetl wiadomość | Oblicz sumę, przekonwertuj wartość, wyszukaj dane |
Użyj Sub, gdy kod działa na skoroszycie, a Funkcja VBA gdy kod generuje odpowiedź, którą coś innego przetwarza.






