W VBA pracujemy na obiektach. Obiekty posiadają właściwości i metody. Czasami też zdarzenia. Zazwyczaj potrafimy je łatwo od siebie odróżnić. Są jednak pewne wyjątki, które pokazują, że model obiektowy Excela nie jest zaprojektowany perfekcyjnie.
Obiekt i kolekcja
Skoro już wiemy, że w VBA wszystko kręci się wokół obiektów, to warto zadać sobie pytanie:
Czym tak naprawdę jest obiekt i z czego się składa?
Z pomocą przychodzi bardzo trafne porównanie do części mowy. Według tej koncepcji – obiekt jest rzeczownikiem. Rzeczownikiem i obiektem jest np. człowiek, dom czy krzesło.
Zbiór obiektów tego samego typu nazywamy kolekcją. Możemy mówić o kolekcji uczniów w klasie, kolekcji pomieszczeń w domu czy kolekcji krzeseł rozmieszczonych wokół stołu.
Właściwości i metody
Każdy obiekt posiada pewne specyficzne dla niego właściwości i metody.
Właściwości charakteryzują dany obiekt, metody wykonują czynności z nim związane. Metody mogą wpływać na właściwości zmieniając ich wartości. Niektóre właściwości mogą być tylko do odczytu – nie da się ich zmienić.
Przykładowo. Jeżeli obiektem jest Człowiek, to jego właściwościami mogą być np. Imię, Płeć, Wzrost, Waga. Najłatwiej zmienić Wagę, wprowadzając w życie metodę Chudnij. Są jednak właściwości, których zmienić nie możemy np. Data Urodzenia lub Miejsce Urodzenia. Są one tylko do odczytu i żadne metody nie pomogą.
W przypadku arkusza, właściwością jest np. jego nazwa, obszar przewijania czy kolor zakładki. Metodą jest jego skopiowanie, przeniesienie, dodanie lub skasowanie.
Właściwościami obiektu mogą być też… kolekcje. W arkuszu mamy np. kolekcję wierszy, kolumn, komórek. Człowiek zaś posiada kolekcję rąk i nóg. Każda z kończyn posiada kolekcję palców.
Niekonsekwencja
Skoro potrafimy już odróżniać właściwości od metod, to pora trochę skomplikować temat 😉. Czasami metody stają się rzeczownikami, a konkretne działania właściwościami. Co prawda – są to wyjątki, ale… jak to możliwe?
Przykładem metody w VBA jest tekst wstawiony do komentarza. Przykładem właściwości – polecenie sortowania danych w arkuszu. Metoda Sort jest nadal dostępna dla obiektu Range, ale w Excelu 2007 wprowadzono dodatkowo obiekt Sort.
Jednym słowem – niezły galimatias i niekonsekwencja. Ale tak naprawdę są to wyjątki i nie ma sensu wchodzić w ten temat głębiej. Najważniejsze aby wiedzieć z jakim obiektem jest spokrewniona dana właściwość.
Moduły klas
Właściwość z założenia zwraca jakąś wartość – tak jak Function w VBA. Metoda zaś wykonuje pewną czynność, ale nie zwraca wartości – coś jak Sub w VBA.
Ale w module klasy jest ciut inaczej. Mamy tam instrukcje Property Get, które są właściwościami publicznymi obiektu. Na samej górze modułu niektórzy deklarują zmienne publiczne lub prywatne…. One też są właściwościami.
To skoro wiemy jak tworzyć właściwości dla naszych obiektów, to pojawia się pytanie:
Jak tworzyć metody obiektu w module klasy?
Otóż metodami w module klas są procedury typu Sub i Function. Czyli możemy stworzyć własną metodę, która… zwraca wartość!
Dokładnie tak! Czasami tworzy się metodę, która zwraca w wyniku wartość logiczną PRAWDA/FAŁSZ. Celem jest sprawdzenie czy dana operacja zakończyła się sukcesem.