Kurs VBA – cz. 11 – operatory

Po dużej ilości informacji z poprzedniej części kursu zajmijmy się czymś lekkim i przyjemnym, tym bardziej, że operatorami zajmowaliśmy się już wcześniej. Operatorami nazywamy różnego rodzaju znaki i symbole, które sklejają razem instrukcje i słowa kluczowe. Są one bardzo istotne i użyte nieprawidłowo mogą całkowicie zmienić logikę kodu.

Operator przyjmuje argumenty tworząc wyrażenia, argumentami operatorów mogą być kolejne wyrażenia itd. W ten sposób można tworzyć skomplikowane instrukcje.
Wyrażenie 1 operator Wyrażenie 2
niektóre operatory przyjmują tylko jeden argument
operator Wyrażenie

Operator przypisania

Jak napisałem w poprzedniej części zmienne po zadeklarowaniu przyjmują wartość 0 lub pusty ciąg znaków. Do zmiany tej wartości służy operator przypisania „=”.
wyrażenie 1 = wyrażenie 2

Wyrażenie 1 musi być zmienną lub atrybutem, wyrażenie 2 jest dowolne, pod warunkiem, że zwraca jakąś wartość (czyli nie może być to np. procedura Sub). Jeżeli wyrażenie 1 jest obiektem przypisanie musimy poprzedzić słowem kluczowym Set. Czytaj więcej...

Kurs VBA – cz. 10 – Zmienne

 

Zmienne pojawiły się już wcześniej w toku kursu. Podstawiałem pod zmienne różne wartości liczbowe lub wskazywały na różne obiekty Excela. Zmienna odpowiada miejscu w pamięci operacyjnej komputera i przechowuje pewną wartość, lub cały zestaw wartości. Każda zmienna jest identyfikowana przez swoją nazwę.

W zakresie widoczności zmiennej (o czym za chwilę) może istnieć tylko jedna zmienna o danej nazwie. Zmiennym możemy przypisywać różne wartości, odczytywać je, zmieniać oraz przepisywać wartość jednej zmiennej do innej. Czytaj więcej...

Kurs VBA – cz. 9 – Obiekt Range

Większość pracy z Excelem polega na modyfikowaniu komórek. Prawie każdy element Excela ma odpowiadający sobie obiekt, w efekcie dużą część pracy w VBA wykonujemy przy pomocy zakresów (obiekt Range). Range może reprezentować pojedynczą komórkę, wiersz, kolumnę, grupę komórek z zakresu ciągłego lub nie albo nawet zakres z kilku skoroszytów jednocześnie.

Właściwość Range obiektu zwraca obiekt typu Range. Może ona być używana następująco.

ObiektNadrzedny.Range(komorka1)
ObiektNadrzedny.Range(komorka1, komorka2) Czytaj więcej...

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ę. Czytaj więcej...

Kurs VBA – cz. 7 – Jak uruchamiać makra, zdarzenia

W czasie kursu stworzyliśmy już kilka makr. Zanim stworzymy dziesiątki i sam stworzysz setki następnych zróbmy podsumowanie różnych metod uruchamiania makr (procedur). Dzięki temu będziesz mógł znaleźć najbardziej wygodną w danej chwili metodę uruchomienia napisanego kodu. Przy okazji oswoimy się bardziej z edytorem VBA, poznamy pierwsze kontrolki i zdarzenia.

Dzięki tym metodom będziesz mógł już w tej chwili na różne sposoby uruchamiać makra nagrane nagrywarką. Np. sprawić, że uruchomi się przy każdym otwarciu pliku, lub przy pomocy przycisku na arkuszu. Czytaj więcej...

Kurs VBA – cz. 6 – Funkcje i procedury

=&0=&W poprzednich częściach kursu tworzyliśmy pierwsze procedury przy pomocy nagrywarki. Zatrzymajmy się na chwilę, żeby omówić czym właściwie są te procedury, żeby lepiej zrozumieć omawiany w przyszłości kod i model obiektowy Excela.

Zasadniczo odróżniamy dwa rodzaje procedur.

  1. sub – są to podprogramy, najczęściej jednak mówi się na nie po prostu „procedury”. Podprogramy przyjmują argumenty ale nie zwracają wartości.
  2. function – jest to funkcja, czyli odmiana procedury, która zwraca wartość

Zarówno funkcje, jak i procedury mogą przyjmować argumenty wejściowe, różnią się tylko tym, czy zwracają jakąś wartość, czy nie. Wbrew pozorom nie jest to błaha sprawa.Wywołaniem nazywamy przejście przez Excela do wykonania danej procedury lub funkcji. Wywołanie jednej procedury musi być umieszczone w innej. Wyjątkiem są procedury zdarzeń (uruchamia je sam Excel w odpowiednich momentach) lub makra uruchamiane przez okno MakroDefinicja funkcji lub procedury pisana jest tylko raz, czyli tylko raz opisujemy jak działa. Wywoływać ją można dowolną ilość razy. Programista ma dostęp do wielu procedur i funkcji wbudowanych. Są to procedury, których definicje są już schowane w Excelu i można je używać w dowolnej chwili. Czytaj więcej...

Kurs VBA – cz. 5 – Okno VBA, struktura projektu

=&0=&Pierwsze spotkanie z edytorem VBA mamy za sobą. Poznajmy lepiej ten program, żeby łatwiej radzić sobie z kolejnymi częściami kursu, gdzie bardzo często będziemy z niego korzystać.

Edytor VBA, w skrócie VBE uruchamiany jest w osobnym oknie. Możemy go otworzyć skrótem alt+F11 lub przyciskiem Visual Basic na karcie Developer w grupie Kod. Jeżeli nie widzisz karty Developer, w „krótkiej pomocy” znajdziesz informację jak ją włączyć. Skrót alt+F11 działa jak przełącznik. Można się nim przełączać na zmianę miedzy VBE a widokiem arkusza.

Ten sam edytor używany jest w innych programach MS Office.

Powyżej przedstawiony jest edytor VBA dla pliku, w którym jest już trochę kodu. Najważniejsze elementy VBE to: Czytaj więcej...

Kurs VBA – cz. 4 – Przeglądamy kod

Podczas nagrywania makr w poprzedniej części kursu stworzony został pewien kod VBA, który dzisiaj będziemy analizować.

Makro z odwołaniami bezwzględnymi

Użyj skrótu alt + F8 lub wybierz Makra w grupie Kod na karcie Deweloper. Wybierz pierwsze makro (o nazwie miesiace_bezwglednie) i naciśnij Edycja. Otworzy się znany już edytor VBA, w którym znajdziemy poniższy kod.

Proste makro, jednak wykonuje w ułamku sekundy to, co sami robimy kilkadziesiąt sekund.

Słowo sub oznacza procedurę. Uruchamiając z poziomu Excela makro, uruchamiamy właśnie jakąś procedurę i jest to podstawowa część programu.  Możemy ją uruchomić na wiele sposobów, które przedstawię w kolejnej części kursu. Bardzo często jedna procedura wywołuje (czyli uruchamia) kilka innych. Z kolei te inne mogą wywoływać kolejne. W ten sposób możemy łatwo tworzyć rozbudowane programy, które zachowują czytelność. Czytaj więcej...

Kurs VBA – cz. 3 – Nagrywanie makr

Pierwsze spotkanie z makrami często zaczyna się od nagrywania. Możemy w ten sposób poprzez wykonywanie zwykłych czynności przy pomocy klawiatury i myszy wygenerować kod VBA. Automat napisze odpowiednie instrukcje odpowiadające temu co robiliśmy.

Nagramy zaraz dwa makra, które robią to samo, ale w wersji z odwołaniami względnymi i bezwzględnymi. Zobaczymy czym się różnią.

Nagrywanie makra, odwołania bezwzględne

Jeżeli na wstążce nie widzisz karty Developer, w krótkiej pomocy znajdziesz instrukcje jak ją odkryć. Postępuj według poniższych kroków.

  1. Otwórz nowy plik,
  2. Wybierz pierwszy arkusz, jeżeli nie jest wybrany,
  3. Zaznacz komórkę A1.
  4. Na karcie Developer w grupie Kod upewnij się, że pole Użyj odwołań względnych nie jest podświetlone.
    Użyj odwołań względnych jest odznaczone
  5. W tym samym miejscu naciśnij Zarejestruj makro.
  6. W nowym oknie wpisz dane jak poniżej i kliknij OK. Zwróć szczególną uwagę na nazwę w polu Nazwa makra.
  7. Poniższe działania zostaną już zapamiętane w naszym makrze. Ikona Zarejestruj makro zmienia się na Zatrzymaj rejestrowanie.
  8. W komórce A1 wpisz „Styczeń”.
  9. W komórkę A2 wpisz „Luty”.
  10. Postępuj podobnie z kilkoma następnymi komórkami.
  11. Naciśnij Zatrzymaj rejestrowanie
Makro jest już gotowe do uruchomienia. Został wygenerowany pewien kod VBA, ale nie będziemy go teraz oglądać.
  1. Przejdź na inny arkusz i wybierz dowolną komórkę.
  2. Otwórz listę makr sposobem z poprzedniej części kursu, czyli naciśnij alt + F8, na liście będzie pozycja z nazwą z punktu 6.
  3. Uruchom makro.
W komórce A1 i poniżej pojawią się nazwy miesięcy. Powtórz to na innych arkuszach. Zauważ, że wypełnione są te same komórki, niezależnie która jest zaznaczona podczas wywoływania makra. Użyliśmy więc odwołań bezwzględnych

Makro z odwołaniami względnymi

Zaznaczmy teraz na karcie Deweloper, grupie Kod pozycję Użyj odwołań względnych.
Użyj odwołań względnych jest zaznaczone

Usuń wcześniej wpisane nazwy miesięcy. Powtórzmy teraz kroki 1-11 aby stworzyć makro i kroki 1-3 aby je uruchomić. Makro opisz jak poniżej.

Jeżeli zrobiłeś wszystko uważnie, miesiące będą się teraz wpisywać począwszy od zaznaczonej komórki w dół, czyli istotne się staje, która komórka jest zaznaczona podczas uruchamiania makra. Czytaj więcej...

Kurs VBA – cz. 2 – Pierwszy program

Podchodząc do nowego języka programowania czy programowania w ogóle nie interesują nas jakieś tam ikonki, menu czy inne bibeloty. Chcemy, żeby coś zaczęło się dziać! Napiszmy więc wspólnie nasz pierwszy program. Będzie on czytał zawartość komórki i wyświetlał ją w okienku (tzw. „pop-up”). Nie musisz się na ten moment zastanawiać co oznaczają poszczególne elementy, tego dowiesz się w następnych częściach kursu. Postaram się przeprowadzić Cię za rękę przez tworzenie pierwszego makra, aby oswoić się tym „zwierzakiem”. Czytaj więcej...