Tworzenie modułu klasy w VBA
Stronę tą wyświetlono już: 6836 razy
W VBA tworząc moduł klasy tworzy się deklarację samej klasy. Moduł klasy dodaje się poprzez wybranie z menu kontekstowego Insert→Class Module tak jak pokazane zostało to na poniższym rysunku.

Nazwa modułu nie może zawierać spacji, nazw specjalnych lub operatorów używanych w VBA. Nazwę w moim przypadku zmieniłem na Car.
Pola klasy
Pola klasy mogą być publiczne public, prywatne private lub statyczne static. Oto przykład deklaracji samych pól klasy:
- Private vmark as String
- Private vmodel as String
- Private vmax_speed as Integer
- Private vacceleration as Double
- Private vcolor as String
Wszystkie pola prywatne są niedostępne spoza klasy, aby to zmienić konieczne jest użycie modyfikatora dostępu Public.
Konstruktor i destruktor klasy
Konstruktor i destruktor w VBA nie może przyjmować żadnych parametrów. Oto przykład deklaracji konstruktora klasy:
- Private Sub Class_Initialize()
- vmark = InputBox("Marka samochodu: ")
- vmodel = InputBox("Model samochodu: ")
- vmax_speed = InputBox("Maksymalna prędkość: ")
- vacceleration = InputBox("Przyspieszenie: ")
- vcolor = InputBox("Kolor: ")
- End Sub
Konstruktor klasy jest uruchamiany automatycznie, gdy obiekt klasy jest tworzony za pomocą Set i new.
Destruktor w VBA wygląda następująco:
- Private Sub Class_Terminate()
- End Sub
Właściwości klasy
Za pomocą właściwości można kontrolować dostęp do pól klasy, albowiem oto słowo kluczowe Get umożliwia utworzenie makra, które będzie zwracało wartość danego pola klasy lub będzie zwracało wartości wszystkich pól jako tekst:
- Public Property Get Description() As String
- Description = "Marka: " & vmark & " Model: " & vmodel & " Maksymalna prędkość " & vmax_speed & " Przyspieszenie: " & vacceleration & " Kolor: " & vcolor
- End Property
Można też udostępnić możliwość ustawiania danego pola za pomocą słowa kluczowego Let tworzy się bowiem metodę, dzięki której można kontrolować wprowadzane dane:
- Public Property Let color(c as String)
- vcolor = c
- End Property
Gdy utworzony zostanie obiekt klasy Car (tak bowiem nazwa mojego modułu klasy brzmi), wtedy dostęp do pola klasy vcolor będzie wyglądał następująco:
- mycar.color = "#ffffff"
Tworzenie obiektu klasy
W zwykłym module po utworzeniu klasy Car w module klasy można stworzyć takie oto makro, pokazujące działanie kodu klasy:
- Sub MyCar()
- Dim c as Car
- Set c = New Car
- MsgBox c.Description
- End Sub
Metody klasy
Wewnątrz klasy oczywiście można tworzyć prywatne, publiczne i statyczne metody w postaci makr lub funkcji.

Tytuł:
Microsoft Excel 2019: VBA i makra
Autor:
Bill Jelen, Tracy Syrstad

Tytuł:
VBA na sto dwa, czyli 102 ćwiczenia z wykorzystaniem VBA
Autor:
Piotr Janus

Tytuł:
VBA dla Microsoft Office 365 i Office 2019
Autor:
Richard Mansfield

Tytuł:
Excel. Programowanie w VBA dla bystrzaków. Wydanie V
Autor:
Michael Alexander, John Walkenbach

Tytuł:
Zrozumieć Excela. VBA - makra i funkcje
Autor:
Maciej Gonet

Tytuł:
VBA dla Excela 2019 PL. 234 praktyczne przykłady
Autor:
Witold Wrotek

Tytuł:
Excel 2016 VBA i makra
Autor:
Bill Jelen, Tracy Syrstad

Tytuł:
VBA dla Excela 2016 PL. 222 praktyczne przykłady
Autor:
Witold Wrotek

Tytuł:
Tworzenie makr w VBA dla Excela 2010/2013. Ćwiczenia
Autor:
Mirosław Lewandowski

Tytuł:
Excel 2013 PL. Programowanie w VBA dla bystrzaków
Autor:
John Walkenbach