VBA jako obiektowy język programowania

Każdy, kto popracuje dłużej z Excelem, natknie się na informacje o makrach, czyli języku programowania VBA (Visual Basic for Applications). Jest to język programowania stosowany w aplikacjach Microsoftu (m.in. Excel, Word, Access, PowerPoint), który działa niejako za kulisami tych aplikacji i umożliwia m.in. automatyzację wielu czynności. W tym artykule omówiona zostanie dokładniej jedna jego cecha, a mianowicie co znaczy, że jest to obiektowy język programowania.

13_INFO_09.jpg

Czym jest obiekt w VBA?

W wielu aspektach obiekt w języku programowania przypomina obiekt w realnym świecie. Zaczynając analizę od obiektów w realnym świecie, np.: piłka, samochód, zegarek, kocica Milka, łatwiej zrozumiemy, czym są obiekty (i ich właściwości) w VBA. Trzeba zaznaczyć, że w każdym przypadku chodzi o jeden konkretny obiekt, a nie jego klasę (o klasach pomówimy później), czyli piłka mojego syna, nasz samochód, nasza kocica Milka.

W Excelu obiektami są np.: wykres, komórka, zakres komórek, arkusz, tabela przestawna, plik, a nawet sam Excel (Application) jest obiektem. Praktycznie wszystko, z czym mamy do czynienia w Excelu, jest obiektem.

Przyjrzyjmy się obiektowi dokładniej na przykładzie Budzika (Rysunek 1).

Każdy obiekt w języku programowania ma swoje cechy/właściwości oraz metody/procedury. Po analizie naszego Budzika widzimy, że jego cechą/właściwością jest godzina, którą pokazuje kolor wskazówek, kolor obudowy, wysokość itp.

Analizując obiekt Excela – Komórkę, można stwierdzić, że jej właściwościami są m.in. wpisana wartość, wysokość, szerokość, kolor czcionki i kolor wypełnienia.

Trudniej zrozumieć, czym jest metoda/procedura obiektu. Możemy sobie wyobrazić, że jest to czynność, którą my wykonujemy z naszym obiektem, albo wykonuje sam obiekt. Metodą dla Budzika może być np. włączenie alarmu. Nie zawsze jest to jasne, bo ustawienie godziny może się wydawać czynnością, ale tak naprawdę jest zmianą właściwości. Z kolei jeśli powiemy, że musimy przestawić zegar do przodu o godzinę, bo np. była zmiana czasu na letni, to już będzie procedura, ponieważ najpierw sprawdzamy, jaka jest właściwość godziny Budzika, a następnie dodajemy do niej godzinę i dopiero tę obliczoną godzinę wpisujemy do właściwości Budzika.

W przypadku komórki metodami/procedurami są m.in. zaznaczenie komórki (Select), skopiowanie (Copy) oraz wyczyszczenie jej zawartości (Clear). Metoda Clear jest równoważna wpisaniu w VBA do komórki pustej wartości/niczego (przykładowy kod VBA: Range(„A1”).Value = „”), ale jest metodą ze względu na sposób implementacji klasy „Komórka” i zawsze to rozstrzyga, czy dany element obiektu jest jego właściwością, czy metodą.

Obiekty w Excelu mają dużo właściwości i metod. Na szczęście VBA ma przyjazny sposób odwoływania się do nich. Jeśli napiszesz w kodzie odwołanie do konkretnego obiektu i zaraz po nim postawisz kropkę (np. Range(„A1”). ), to edytor VBA wyświetli listę wszystkich właściwości i metod danego obiektu (Rysunek 2). Metody są oznaczone ikoną ruchomego pudełka, a właściwości – ikoną palca wskazującego na tekst.

Hierarchia obiektów

Najbardziej charakterystyczna hierarchia w Excelu zaczyna się od komórki (Range(„A1”)). Jeśli pracowałeś już z Excelem, to jasne jest, że komórka jest częścią jakiegoś zakresu. Szczególnym rodzajem zakresu jest arkusz (Worksheets(„Arkusz1”)). Powinno być jasne, że arkusz jest wyżej w hierarchii niż komórka, ponieważ zawiera wiele komórek. Z kolei nad arkuszem stoi plik (Workbooks(„Zeszyt1.xlsx”)), który może zawierać wiele arkuszy. A jeszcze wyżej znajduje się Excel (Application), gdyż może pracować z wieloma otwartymi plikami naraz.

W języku VBA na niższe poziomy hierarchii schodzi się analogicznie jak przy odwoływaniu się do właściwości czy metod obiektu, czyli wstawiając kropkę, po precyzyjnym odwołaniu się do obiektu, gdyż obiekt z niższego poziomu hierarchii jest traktowany jako właściwość obiektu z wyższego poziomu.

Pełna ścieżka do zaznaczenia komórki (Select) od poziomu Excela wygląda tak:

Application.Workbooks(“Zeszyt1.xlsx”).Worksheets(“Arkusz1”).Range(“A1”).Select

Na szczęście w VBA praktycznie nigdy nie musimy pisać tak długich odwołań, ponieważ działamy przy założeniu, że odwołujemy się do aktywnego obiektu, czyli jeśli napiszemy tylko Range(“A1”).Select, to VBA zaznaczy nam komórkę A1 na aktywnym arkuszu.

Przykładem z realnego świata może być sytuacja w domu, w którym jestem razem z żoną i proszę ją o włączenie światła. Zakładając, że żona jest w salonie, domyślnie włączy światło w salonie. Jeśli jednak zależałoby mi, żeby włączyła światło w kuchni, a ona dalej jest w salonie, muszę powiedzieć: „Kochanie, włącz światło w kuchni”.

Wykorzystałeś swój limit bezpłatnych treści

Pozostałe 60% artykułu dostępne jest dla zalogowanych użytkowników portalu. Zaloguj się, wybierz plan abonamentowy albo kup dostęp do artykułu/dokumentu.

Kilka wariantów prenumeraty Pokaż opcje
Dwutygodniowy dostęp bez zobowiązań Wybieram

Abonament już od 100 zł miesięcznie

Dwutygodniowy dostęp bez zobowiązań

Pełen dostęp do wszystkich treści portalu
to koszt 100 zł miesięcznie
przy jednorazowej płatności za rok

WYBIERAM

Dwutygodniowy dostęp do wszystkich treści
portalu za 99 zł netto, które odliczymy od ceny
regularnej przy przedłużeniu abonamentu

WYBIERAM

Pełen dostęp do wszystkich treści portalu
to koszt 100 zł miesięcznie
przy jednorazowej płatności za rok

Dwutygodniowy dostęp do wszystkich treści
portalu za 99 zł netto, które odliczymy od ceny
regularnej przy przedłużeniu abonamentu

WYBIERAM

Polityka cookies

Dalsze aktywne korzystanie z Serwisu (przeglądanie treści, zamknięcie komunikatu, kliknięcie w odnośniki na stronie) bez zmian ustawień prywatności, wyrażasz zgodę na przetwarzanie danych osobowych przez EXPLANATOR oraz partnerów w celu realizacji usług, zgodnie z Polityką prywatności. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.

Usługa Cel użycia Włączone
Pliki cookies niezbędne do funkcjonowania strony Nie możesz wyłączyć tych plików cookies, ponieważ są one niezbędne by strona działała prawidłowo. W ramach tych plików cookies zapisywane są również zdefiniowane przez Ciebie ustawienia cookies. TAK
Pliki cookies analityczne Pliki cookies umożliwiające zbieranie informacji o sposobie korzystania przez użytkownika ze strony internetowej w celu optymalizacji jej funkcjonowania, oraz dostosowania do oczekiwań użytkownika. Informacje zebrane przez te pliki nie identyfikują żadnego konkretnego użytkownika.
Pliki cookies marketingowe Pliki cookies umożliwiające wyświetlanie użytkownikowi treści marketingowych dostosowanych do jego preferencji, oraz kierowanie do niego powiadomień o ofertach marketingowych odpowiadających jego zainteresowaniom, obejmujących informacje dotyczące produktów i usług administratora strony i podmiotów trzecich. Jeśli zdecydujesz się usunąć lub wyłączyć te pliki cookie, reklamy nadal będą wyświetlane, ale mogą one nie być odpowiednie dla Ciebie.