Kurs VBA – cz. 8 – Model obiektowy Excela

Excel bazuje w luźny sposób na idei programowania obiektowego. W tej części kursu skupimy się na modelu obiektowym Excela, czyli zestawie obiektów, które są dostępne w każdej chwili dla programisty.

Obiekt jest pewnego rodzaju pojemnikiem odzwierciedlającym jakiś element Excela. Jest on identyfikowany przez nazwę i zawiera:

  1. atrybuty (property)
  2. metody (methods)
  3. zdarzenia (events)
Do obiektów nie odwołujemy się bezpośrednio, tylko przez ich atrybuty i metody.
Obiekt.identyfikator[.identyfikator]
Identyfikator może być metodą, która wykonuje jakieś działanie (dokładnie tak jak procedura lub funkcja). Może też być atrybutem, który jest jakąś zwykłą wartością lub kolejnym obiektem. W ten sposób możemy tworzyć cały łańcuszek, na którego końcu musi być jakiś atrybut lub metoda. Poniżej znajduje się kilka przykładów, które przybliżają ten temat. Skoro wiemy już jak uruchamiać procedury, proponuję uruchomić każdy z poniższych przykładów i wprowadzić w nim różne zmiany. Oczywiście przykłady te należy zawrzeć w procedurze.

Przykład 1.

 

Worksheets(1) jest obiektem oznaczającym pierwszy arkusz a Select jest metodą. W wyniku takiej instrukcji pierwszy arkusz zostanie zaznaczony.

Przykład 2.

 

Name jest atrybutem Obiektu Worksheet i oznacza jego nazwę. Zmieniamy w ten sposób nazwę na „Zielony”.

Przykład 3.

 

W ten sposób nadajemy zmiennej NazwaArkusza wartość nazwy pierwszego arkusza.

Przykład 4.

 

Powyżej mamy łańcuszek obiektów. Obiekt z prawej strony każdej kropki jest atrybutem obiektu z lewej strony tej samej kropki. Na samym końcu mamy atrybut będący wartością komórki A1 w arkuszu Arkusz1 w skoroszycie Zeszyt1.

Przykład 5.

Niektóre metody przyjmują argumenty, wywołuje się je podobnie jak zwykłe procedury.

 

Powyższa metoda dodaje nowy arkusz i może przyjąć cztery argumenty:
  • Before – przed którym arkuszem ma być dodany nowy,
  • After – po którym arkuszu ma być dodany nowy,
  • Count – ile arkuszów ma być dodanych
  • Type – jakiego typu mają być nowe arkusze
Powyżej podałem pierwszy i trzeci argument. Drugi został pominięty, więc między przecinkami jest puste miejsce. Wszystkie argumenty, które znajdują się na końcu są już pominięte, nie trzeba stawiać przecinków, Excel domyśla się, że nie chcemy ich przekazać.
Argumenty można też dodać poprzez nazwy, jest to szczególnie przydatne dla metod, które mają dużo, np. kilkanaście argumentów. Nie musimy wtedy stawiać dużo zbędnych przecinków. Instrukcję
 

można tez zapisać:
 

Przykład 6.

Część metod może też zwracać wartości (tak jak funkcje). Np. powyższa metoda zwraca obiekt nowego arkusza.
 

Tak jak w przypadku procedur konieczne jest zamknięcie argumentów w nawiasach. Nie znasz jeszcze słowa kluczowego Set. Poznasz je wkrótce. Istotne jest to, że powyżej został dodany nowy arkusz, który został zapamiętany w zmiennej NowyArkusz. Dzięki temu mogłem zmienić jego nazwę.

Aktywny obiekt

Przez prawie cały czas pracy z Excelem jakieś obiekty są zaznaczone. Czyli zostały kliknięte przez użytkownika. Są to:

  • ActiveCell – zaznaczona komórka,
  • ActiveChart – zaznaczony wykres,
  • ActivePrinter – domyślna drukarka,
  • ActiveSheet – aktywny arkusz,
  • ActiveWindow – otwarte okno
  • ActiveWorkbook – wybrany skoroszyt

Obiekty domyślne

Zobaczmy dwie poniższe instrukcje:

 

Jeżeli mamy zaznaczony Arkusz1 w skoroszycie Zeszyt1, obie instrukcje wykonają dokładnie to samo. Drugą instrukcję Excel tak naprawdę rozumie jako:

 

Czyli przed Range(„A1”) wstawia aktywne obiekty, oszczędza Ci jednak pisania. Musisz się zadeklarować, jeżeli chcesz się odwołać do arkusza lub skoroszytu, które nie będą zaznaczone w czasie wykonywania kodu. Np.:

 

W przykładzie  Range(„A1”) brakuje też atrybutu value. Jest to atrybut domyślny, wartość komórki jest jej najważniejszą cechą i Excel w takim przypadku nie wymaga podania atrybutu.

Konstrukcja with

Już wcześniej spotkaliśmy się z konstrukcją With

 

Jest to kolejne ułatwienie, które udostępnia nam edytor VBA. Powyższy kod znaczy to samo co poniższy, tylko jest mniej czytelny.

 

Zamiast pisać Selection.Interior pięć razy, piszemy tylko raz.

Skąd czerpać informacje o obiektach?

Obiekty, metody i atrybuty w modelu obiektowym Excel’a można liczyć w tysiące i pewnie dla początkującego programisty jest to przytłaczające. Najważniejsze obiekty szybko jednak zapadają w pamięć. Na pewno najlepiej zapoznać się przede wszystkim z poniższymi obiektami Range, Worksheet i Workbook. Poświęcę im niedługo osobną część kursu.

Bardzo przydatnym narzędziem jest nagrywarka. Jeżeli chcę usunąć arkusz, co bez problemu umiem zrobić „tradycyjnie”, wystarczy, że nagram tą czynność i wygeneruję poniższy kod.

 

Wiem już jaka metoda odpowiada za usuwanie arkusza. Wiem już co nieco o modelu obiektowym, mogę więc zastąpić ten kod prostszym i pominąć zaznaczanie.

 

Niedługo dowiem się co nieco na temat zmiennych, więc mogę pytać użytkownika o nazwę arkusza do usunięcia

 

MSDN

Bardzo dobrym źródłem jest portal wiedzy prowadzony przez Microsoft o nazwie MSDN. Zgromadzona jest tam ogromna ilość informacji na temat bardzo różnych produktów Microsoftu. Listę obiektów dla poszczególnych wersji Excel’a można znaleźć tutaj:

Trudno mi powiedzieć jak długo powyższe linki będą działać. Z mojej praktyki jednak wynika, że najłatwiej jest wpisać w google:
Excel MSDN „nazwa obiektu i ewentualnie metody lub atrybutu”
i od razu wśród pierwszych wyników pojawią nam się łącza do odpowiednich stron MSDN.

Przeglądarka obiektów

Jeżeli nie mamy dostępu do internetu, możemy posłużyć się wbudowaną przeglądarką obiektów. Została ona jednak usunięta w wersji 2013 Excel’a, więc nie ma co się do niej przyzwyczajać.

  1. Edytując moduł wybierz w górnym menu View/Object Browser lub naciśnij F2.
  2. Upewnij się, że wybrana jest pozycja
  3. Lewe okno zawiera listę obiektów a prawe listę atrybutów, metod i zdarzeń danego obiektu
  4. Klikając prawym klawiszem na atrybucie można wybrać Help aby uzyskać wyczerpujący opis danego elementu

 


Subskrybuj RSS, lub polub blog na Facebooku aby otrzymywać najnowsze informacje o rozwoju kursu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *