Start > Kursy on-line > Excel - makra i VBA

Excel - makra i VBA


Najważniejsze elementy interfejsu

Przypomnijmy sobie jak wygląda uruchamiane w poprzednim rozdziale okno środowiska VBA:



Pierwszą rzeczą, którą należy podkreślić jest fakt, iż środowisko programowania Microsoft Visual Basic Excela jest w języku angielskim. Stąd całe menu oraz wszelkie dostępne polecenia pod przyciskami, są w tym właśnie języku.

Spójrzmy teraz na poszczególne elementy powyższego okna.
Na samej górze mamy menu oraz standardowy pasek narzędzi:




Na pasku narzędzi umieszczone są wprost najważniejsze i najczęściej używane polecenia:



Pierwsze z lewej (ikonka programu Excel), zwyczajnie przeniesie nas do aktywnego pliku Excela (podobny efekt możemy uzyskać przełączając się pomiędzy oknami w systemie Windows, np. przy użyciu klawiszy Atl+Tab). W kolejnej rozwijanej (jak widać powyżej) ikonie zwarte są podstawowe polecenia dotyczące dodawania obiektów do projektu naszego programu:
- UserForm - formularz w formie okna systemu windows, który możemy wykorzystać do interakcji z użytkownikiem, wyświetlania danych, budowania dodatkowych funkcjonalności - więcej o tym obiekcie powiemy sobie w dalszej części tego kursu
- Module - moduł, który zawiera część kodu programu (niektóre procedury i funkcje). Jak sobie doprecyzujemy za chwilę (w kolejnej części kursu) tu umieszczamy kod, do którego możemy się odwoływać z praktycznie dowolnego miejsca projektu.
- Class Module - rodzaj modułu, który zawiera definicje klas, czyli specyficznych obiektów. Klasa służy jako wzorzec obiektu do dalszego wykorzystania w programie - zawiera jego definicję, właściwości oraz metody które mają za zdanie nim sterować. Używane są przez zaawansowanych użytkowników podczas tworzenia rozbudowanych projektów.
- Procedure - wstawianie procedur do aktualnie edytowanych obiektów.

Kolejny przycisk paska narzędzi służy zapisywaniu aktualnego pliku programu Excel (zmiany w projekcie VBA także zostaną zapisane).

Dalsza część omawianego paska (otoczona czerwoną ramką) ma za zadanie ułatwić zwykłą edycję kodu, czyli mamy dostępne kolejno polecenia:
- Cut - czyli "Wytnij" (skrót klawiaturowy: Ctrl+X) - wycina zaznaczony tekst lub kontrolkę formularza, przechowując ją w pamięci.
- Copy - czyli "Kopiuj" (Ctrl+C) - kopiuje zaznaczony tekst lub kontrolkę.
- Paste - czyli "Wklej" (Ctrl+V) - wkleja odpowieni fragment tekstu lub kontrolkę, która poprzednio została wycięta lub skopiowana.
- Find - czyli "Szukaj" - pozwala odnajdować określony tekst w kodzie:




umożliwia także zamianę podanego tekstu (po naciśnięciu przycisku Replace w powyższym oknie:



Warto chwilę zatrzymać się nad polami i opcjami wyszukiwania/zamieniania tekstu:
- pole Find What:wpisujemy wyszukiwany tekst,
- pole Replace With:wpisujemy tekst, na który ewentualnie będziemy zamieniać tekst wpisany w poprzednie pole,
- sekcja Search - określamy gdzie mamy szukać/zamieniać tekst: może to być bieżąca procedura, moduł lub też cały projekt (czyli wszystkie wystąpienia w bieżącym programie),
- pole wyboru Direction określa, czy szukanie ma się odbywać w dół, w górę czy też w obu kierunkach (domyślnie),
- opcja Find Whole Word Only oznacza, że w przypadku szukania określonej frazy, odnajdowane będą jedynie te fragmenty kodu, w którym dany wyraz jest całością (przykładowo jeśli szukamy tekstu "jako" a w danym obszarze występuje słowo "jakoś", nie zostanie ono odnalezione jeśli ta opcja będzie wybrana),
- opcja Match Case oznacza szukanie "dokładnego dopasowania" łańcucha znaków, czyli np. uwzględnianie wielkości liter,
- opcja Use Pattern Matching - rzadko używana, oznacza szukanie wg wzorca - używana zamiennie z poprzednią - umożliwia poszukiwania słów, sformułowań podobnych do zawartego w polu "Find What" - słowa mogą być otoczone np. gwiazdką, która będzie oznaczać dowolny łańcuch przed lub po szukanym sformułowaniu,
- przycisk Find Next - szukanie najbliższego wystąpienia żądanego tekstu,
- Cancel - rezygnacja i zamknięcie okna szukania/zamieniania,
- Replace - zamiana najbliższego wystąpienia szukanego tekstu,
- Replace All - zamiana wszystkich odnalezionych wystąpień poszukiwanego tekstu,
- Help - wyświetlanie pomocy (w j. angielskim).

Ostatnie dwa polecenia z zaznaczonej czerwoną ramką sekcji służą cofaniu (Ctrl+Z) i powtarzaniu (Ctrl+Y) ostatnio wykonanej edycji kodu/tekstu.

Kolejna sekcja została otoczona niebieską ramką. Polecenia na niej umieszczone dotyczą bezpośredniego uruchamiania (Run - klawisz F5), przerywania (Break - Ctrl+Break) lub zatrzymywania kodu (Reset>), który aktualnie tworzymy i który jest aktywny. Ostatni przycisk, z ikoną ekierki, linijki i ołówka pozwala na przełączanie się pomiędzy trybem projektowania i trybem uruchamiania programu - ma znaczenie podczas wstawiania i edycji kontrolek ActiveX do arkusza (w trybie normalnym nie można edytować ich właściwości - trzeba to zrobić właśnie w trybie projektowania). Identyczne polecenie mieliśmy zaprezentowane na karcie Deweloper w sekcji Formanty wstążki.

Ostatnia sekcja, otoczona czarną ramką zawiera polecenia związane z widokiem/wyświetlaniem elementów interfejsu:
- Project Explorer - włączanie widoku eksploratora projektu:




Okno to pozwala przełączać się pomiędzy obiektami programu Excel: począwszy od dodatków i arkusza makr osobistych, na otwartych plikach Excel skończywszy. W tym oknie będą widoczne wszystkie otwarte skoroszyty i arkusze. Dodatkowo, jeśli projekt zawierać będzie moduły, moduły klas lub formularze, także będą one widoczne na tym drzewie. Dwukrotne kliknięcie w określony obiekt zawsze powoduje wyświetlenie po prawej stronie okna z kodem (na białym tle), z którym zetknęliśmy się już w rozdziale omawiającym modyfikację wcześniej zarejestrowanego makra (to jest właśnie to miejsce).
- Kolejne polecenie Properties Window pokazuje okno właściwości obiektu. Wyświetla się ono domyślnie pod oknem eksploratora projektu i wygląda następująco:




Okno właściwości wyświetla cechy obiektu aktualnie zaznaczonego w oknie eksploratora projektu. Na powyższym obrazie zaznaczony jest "Arkusz2" i to jego właściwości możemy zobaczyć w omawianym oknie. Lewa kolumna okna zawsze oznacza nazwę danej właściwości, prawa - jej ustawienie. Czyli np. właściwość Name ustawiona jest na Arkusz2. Jeśli w tym miejscu wpiszemy po prostu "arkusz_test" - możemy sprawdzić co stało się z nazwą arkusza:



" jak widać używając strony programistycznej Excela, udało nam się w prosty sposób zmienić nazwę arkusza. Dodać należy, iż wszystkie właściwości można odczytywać (lub zapisywać, o ile na to pozwalają) za pomocą poleceń języka VBA zapisanych w funkcjach lub procedurach.
- Trzecie polecenie w tej sekcji to Object Browser - jego użycie powoduje wyświetlenie przeglądarki obiektów po prawej stronie:




Możemy dzięki niemu szukać klas/bibliotek, które pozwolą nam zrealizować określone zadania. Przeglądarka ta ma za zadanie wyświetlić nam zarówno obiekty (z lewej strony), ale przede wszystkim pokazać wszystkich członków danego obiektu (po prawej). Członkami danej klasy/biblioteki mogą być zarówno właściwości (zasygnalizowane przed chwilą), jak i metody, które rozumiane są jako elementy powodujące określone zachowanie danego obiektu lub działanie względem niego. Właściwości są oznaczone "rączką, która wskazuje na tabelkę", metody "zieloną kostką w ruchu". Np. dla klasy "Arkusz2" mamy wyświetlone właściwości zawierające także te, o których wspomnieliśmy powyżej - natomiast mamy też metody jak np. "Copy" (kopiowanie), "Delete" (usuwanie) i inne powodujące określone działania (a nie tylko odpowiadającej za wyświetlanie, formatowanie i wygląd - czemu głównie służą właściwości).
- Ostatnim elementem na pasku narzędzi jest Toolbox - czyli przybornik z kontrolkami, dostępny w trakcie tworzenia formularza użytkownika - omówimy sobie dokładniej jego użycie w dalszej części tego kursu.

Nad paskiem narzędzi znajduje się anglojęzyczne menu. Jego kolejne elementy są dość intuicyjne i podobne do każdej innej aplikacji systemu Windows. Omówimy pokrótce poszczególne grupy poleceń zatrzymując się jedynie dłużej na kilku najważniejszych, których nie ma na opisywanym przed chwilą standardowym pasku narzędzi. Menu, o którym piszę prezentuje się następująco:




Kolejne grupy poleceń oznaczają:

  • File - (plik) wszystko co związane jest z plikiem i jego obsługą: zapisywanie (Save), import (Import) i eksport (Export) plików z formularzami, kodem itd., ostatnie polecenie zamyka środowisko Excela i przełącza użytkownika do pliku Excela (Close and Return")
  • Edit - (edycja) standardowy element każdego programu, który jest edytorem jakiegokolwiek tekstu: polecenia typu kopiuj (Copy), wklej (Paste), wytnij (Cut), znajdź (Find), zamień (Replace) czy zwiększ/zmniejsz wcięcie (Indent/Outdent) - i wiele innych.
  • View - (widok) - lista poleceń związana ze sterowaniem środowiskiem w sensie pokazywania i ukrywania jego elementów. Mamy tu powtórzenie poleceń z paska: pokaż eksplorator projektu (Project Explorer), czy też przeglądarkę obiektów (Object Browser), ale jest też polecenie Code, które powoduje wyświetlenie kodu języka VBA w oknie z prawej strony, przypisanego do aktualnie aktywnego (w oknie eksploratora) obiektu .
  • Insert - (wstaw) - praktycznie powtórzenie analogicznej sekcji z paska narzędzi omawianego wcześniej.
  • Format - (formatowanie) upraszcza wyrównywanie i sterowanie układem kontrolek na formularzu. Użyjemy niektórych przykładowych poleceń z tej grupy w dalszych rozdziałach dotyczących tworzenia formularza UserForm.
  • Debug - (sprawdzanie pod kątem błędów/debugowanie) - pozwala na użycie poleceń, których zadaniem jest umożliwienie projektantowi znajdowanie ewentualnych błędów. Często zdarza się, że dopiero co napisana np. procedura lub funkcja nie działa jak należy (w skrajnych przypadkach powodując np. zawieszenie komputera w jakiejś źle określonej pętli) - wówczas przydatne jest śledzenie kodu zatrzymując jego wykonanie na określonej linii kodu. Aby to zrobić należy ustawić się na danej linijce i wybrać polecenie Toggle Breakpoint:



    a dane linijka zostanie oznaczona bordowym kolorem, a z lewej strony pojawi się bordowa kropka (jak na obrazku powyżej). W trakcie uruchomienia potem kodu (np. procedury) jeśli program napotka taki wiersz, to zatrzyma się i zaznaczy go na żółto:



    Dzięki temu możemy najechać myszką nad np. zmienną lub wyrażenie, aby sprawdzić jaką w tym momencie przyjmuje wartość (jak widać powyżej) - co jest niezmiernie pomocne w wychwytywaniu błędów logicznych w pętlach i instrukcjach warunkowych (których trudno uniknąć, przy bardzo rozbudowanych strukturach logicznych).
  • Run - (uruchom) podobne polecenia jak na pasku narzędzi, służące uruchamianiu i zatrzymywaniu aktualnie edytowanego kodu/formularza
  • Tools - (narzędzia) bardzo ciekawe miejsce, przy którym zatrzymamy się na dłużej. Po rozwinięciu tego elementu menu, zobaczymy następujące elementy:



    pierwszy z nich to References - niezmiernie ważna rzecz. Po użyciu tego polecenia pokaże się nam okno:



    W oknie tym mamy wylistowane wszystkie biblioteki (najczęściej są to pliki w formacie *.dll) zainstalowane w systemie Windows. Te, które domyślnie są zaznaczone (jak powyżej) są absolutnym minimum, które pozwala na działanie makr w Excelu. Z listy możemy jednak wybrać i zaznaczyć dodatkowe, z których mamy zamiar korzystać podczas budowania naszego programu. Znaczenie referencji omówimy sobie dokładniej później, jednak teraz wspomnimy tyle, że ich użycie umożliwia wykorzystanie wielu dodatkowych poleceń (o ile są zgodne z Microsoft Visual Basic), przez co uzyskanie dodatkowych funkcjonalności w naszym projekcie.
    Kolejne polecenie w tej grupie menu to Macros - jest to identyczne polecenie jak Makra umieszczone na wstążce. Dalej mamy Options - jego użycie spowoduje wyświetlenie okna:




    Powyżej przedstawione są wszystkie zakładki tego samego okna opcji. Karta Editor zawiera ustawienia edytora kodu języka. Sekcja "Code Settings" pozwala na włączenie sprawdzania poprawności ("Auto Syntax Check"), wymuszania deklaracji zmiennych ("Require Variable Declaration"), automatycznej informacji o danych i podpowiedzi podczas tworzenia kodu ("Auto"") oraz automatycznego wcięcia tekstu dla np. zagnieżdżonych pętli oraz instrukcji warunkowych ("Auto Indent"). Sekcja "Window Settings" umożliwia np. przeciąganie i upuszczanie textu ("Drag-and-Drop""), wyświetlanie całej zawartości modułu (włączając puste linie - "Default to Full Module View"), czy też oddzielania poszczególnych procedur poziomą linią ("Procedure Separator"). Karta Editor Format zawiera ustawienia czcionek wyświetlanych w trakcie edycji kodu języka VBA. Kolejna karta - General określa ustawienia dla rozkładu siatki w formularzu ("Show Grid") i wyrównywania kontrolek na formularzu do tej siatki ("Align Controls to Grid"). Inne ważna sekcja to "Error Trapping", w której ustawić można jak program ma reagować na błędy - domyślne ustawienie to "Break On Unhandled Errors" - które wyłapuje prawie wszystkie pospolite pomyłki, jakie przydarzają nam się podczas tworzenia i uruchamiania kodu. Ostatnia karta Docking oznacza dokowanie elementów interfejsu. Dokowaniem nazywamy przytwierdzanie okien do granic okna głównego programu. Zauważmy, że każde okno (np. Properties - czyli okno właściwości) możemy złapać myszką u góry i przeciągnąć w dowolne miejsce okna programu, jednak kiedy zbliżmy się odpowiednio blisko do którejkolwiek krawędzi - program podpowiada nam jego automatyczną lokalizację w tym miejscu:



    patrząc na przerywaną linię widzimy, że program podpowiada nam umieszczenie okna w górnej części interfejsu. Po upuszczeniu okna w tej sytuacji, okno programu będzie wyglądało następująco:



    Kolejne polecenia w tej grupie to VBAProject Properties - możemy dzięki niemu nazwać nasz program inaczej niż domyślnie. Dodatkowo druga karta wyświetlonego okna pozwala nam zabezpieczyć hasłem kod przed ciekawskimi:



    Wystarczy zaznaczyć opcję "Lock Project for viewing" a następnie podać dwukrotnie hasło dostępu, aby spowodować zablokowanie (bez znajomości hasła) dostępu niepożądanym osobom dostępu do kodu (szeroko stosowane przez producentów wszelkiego rodzaju dodatków, którzy chronią w ten sposób swoją własność intelektualną). Ostatnim poleceniem w tej grupie nemu jest Digital Signature - czyli podpis elektroniczny. Gdybyśmy dysponowali własnym certyfikatem zainstalowanym w systemie operacyjnym, w tym miejscu moglibyśmy podpisać nim nasz program.
    Dalsze elementy całego menu to:
  • Add-Ins - sterujący dodatkami
  • Window - sterujące układem okien podglądu kodu programu (o ile jest ich otwartych więcej w tym samym czasie).
  • Help - gdzie uzyskujemy dostęp do pomocy VBA (nie jest domyślnie instalowana i jest w j. angielskim).