Kurs VBA - procedura Sub i procedura Function
W języku VBA rozróżniamy dwa rodzaje procedur: Sub oraz Function. Procedura Function jest podobna do procedury Sub, ale zwraca wartość do zapisu, którą ją wywołał. Aby poznać szczegóły dotyczące procedur Sub i procedur Function w języku VBA zapraszamy do lektury poniższego artykułu.
W języku VBA rozróżniamy dwa rodzaje procedur: Sub oraz Function. Procedura Function jest podobna do procedury Sub, ale zwraca wartość do zapisu, którą ją wywołał. Aby poznać szczegóły dotyczące procedur Sub i procedur Function w języku VBA zapraszamy do lektury poniższego artykułu.
VBA – Procedura Sub
Procedurą możemy określić najmniejszą cześć kodu, która posiada własną nazwę. Procedura to także najmniejsza część kodu którą mamy możliwość uruchomić niezależnie od innej części utworzonego kodu. Procedura Sub służy do automatyzacji określonych, powtarzalnych działań. Procedura Sub przyjmuje argumenty, ale nie zwraca wartości, dlatego nie może być wykorzystywana w formułach. Procedurę deklaruje się za pomocą słowa kluczowego Sub, procedura jest zamykana przez instrukcję End Sub.
Składnia procedury Sub
Procedury nie zwracają żadnej wartości. Ich budowa wygląda następująco:
[TypWidoczności] Sub nazwa_procedury([argument1 As Typ], [argument2 As Typ], ...)
End Sub
TypWidoczności – Private lub Public;domyślnie ustawiony na Public; opcjonalne
Sub – słowo kluczowe początek procedury; wymagane
nazwa_procedury – nazwa procedury może zawierać wyłącznie litery, cyfry oraz znaki podkreślenia i powinna rozpoczynać się od litery, nie powinna zawierać słów kluczowych języka VB; wymagane
argument1, argument2 – argumenty procedury oraz ich typy; opcjonalne
End Sub – dwa słowa kluczowe wskazujące na koniec bieżącej procedury; wymagane
Uruchamianie procedury Sub
Uruchomić procedury możemy na dwa sposoby:
- w Excelu – dostępne na karcie Deweloper w grupie Kod pod opcją Makro. Po wyświetleniu okna o nazwie Makro należy kliknąć dwukrotnie na makro lub zaznaczyć oraz kliknąć przycisk Uruchom (jeśli chcemy widzieć procedurę w oknie makro, to należy ustawić Typ Widoczności na Public),
Rys. 1. Umiejscowienie opcji Makro
- w edytorze VBA – polecenie Run (Run Sub/UserForm) znajduje się w menu Run.
Rys. 2. Opcja wywołania makra
Wywoływanie procedury Sub w języku VBA
Wywoływanie procedury w innej procedurze lub funkcji wygląda następująco:
Call nazwa_procedury_wywolywanej(argumenty)
lub
nazwa_procedury_wywolywanej argumenty
Przykład wykorzystujący odwołanie do procedury bezargumentowej:
Sub wyswietl_komunikat1()
MsgBox "komunikat"
End Sub
Sub uruchom_procedure1_1()
Call wyswietl_komunikat1 ‘pierwszy sposób wywołania procedury
End Sub
Sub uruchom_procedure1_2()
wyswietl_komunikat1 ‘drugi sposób wywołania procedury
End Sub
Oczywiście procedurę wyświetl_komunikat można poprawić tak, aby pobierała argument jako tekst i go wyświetlała:
Sub wyswietl_komunikat2(tekst As String)
MsgBox tekst
End Sub
Sub uruchom_procedure2_1()
Call wyswietl_komunikat2("To jest komunikat")
End Sub
Sub uruchom_procedure2_2()
wyswietl_komunikat2 "To jest komunikat"
End Sub
VBA Procedura Function
Funkcje to instrukcje VBA, których zadaniem jest wykonanie obliczeń i zwrócenie pojedyńczej wartości bądź tablicy. Procedura Function posiada opcje użycia argumentów. Może być zastosowana jako fragment wyrażenia w procedurze oraz w formule tworzonej w arkuszu. Procedura wykonuje określone zadanie, a później przekazuje sterowanie do kodu wywołującego. Procedurę wywołuje się za pomocą słowa Function, a jest zamykana przez wyrażenie End Function.
Budowa procedury Function
Funkcja zwraca wartość. Budowa funkcji wygląda następująco:
[TypWidoczności] Function nazwa_funkcji([argument1 As Typ], [argument2 As Typ], ...)
End Function
TypWidoczności – przyjmuje dwie wartości: albo Public albo Private. W przypadku ustawienia na Public można skorzystać z funkcji w formułach zdefiniowanych przez użytkownika; opcjonalne
Function – słowo kluczowe oznaczające rozpoczęcie funkcji wymagane
nazwa_funkcji- nazwa funkcji podobnie jak nazwa procedur może zawierać litery, cyfry oraz znaki podkreślenia, może zaczynać się wyłącznie od litery i nie może zawierać słów kluczowych języka VB; wymagane
argument1, argument2 – argumenty funkcji oraz ich typy; opcjonalne
End Function – dwa słowa kluczowe wskazujące na koniec bieżącej funkcji; wymagane
Uruchomianie Procedury Function
Funkcję można uruchomić z Excela w formułach zdefiniowanych przez użytkownika. W tym celu należy przejść do karty Formuły i z grupy Biblioteka funkcji i wybrać opcję Wstaw funkcję (rys. 3).
Rys. 3. Wstawianie zdefiniowanej przez użytkownika funkcji
Po wyświetleniu okna Wstawianie funkcji należy wybrać kategorię Zdefiniowane przez użytkownika, a następnie wskazać wybraną funkcję i kliknąć OK.
Rys. 4. Funkcje zdefiniowane przez użytkownika
Wywoływanie procedury Function w języku VBA
nazwaFunkcji(argumenty)
Przykład funkcji pobierającej jedną liczbę i podającej wynik potęgowania:
Function potegowanie(ByVal liczba1 As Double) As Double
potegowanie = liczba1 * liczba1
End Function
Sub komunikat()
l1 = Range("A1")
wynik_potegowania = potegowanie(l1)
MsgBox "Potęga podanej liczby wynosi " & wynik_potegowania
End Sub
Autorem artykułu jest Grzegorz Plak, trener Cognity.
Tych z państwa którzy chcą wiedzieć więcej o funkcjach i procedurach dla VBA zapraszamy na nasze szkolenia.