01 - Wprowadzenie do języka VBA


Pierwsza lekcja poświęcona jest zapoznaniu się z podstawowym narzędziem pracy każdego programisty VBA, czyli edytorem kodu VBA.

W dalszej części tej lekcji znajdziesz przydatne informacje na temat skrótów klawiaturowych i ustawień edytora VBA oraz opis poszczególnych okienek tego edytora.

Zmiana ustawienia zabezpieczeń przed makrami

Pierwszą czynnością, od której musimy zacząć jest odblokowanie możliwości korzystania z makr i edytora VBA.

Po zainstalowaniu pakietu MS Office, domyślnie włączona jest w Excelu blokada makr, tak aby nie dopuścić do przypadkowego uruchomienia jakiegoś niepożądanego makra (makra mogą wykonywać bardzo wiele czynności, także destrukcyjnych, włącznie z usuwaniem danych z dysku).

Jeżeli korzystasz z Excela 2007, okno zabezpieczeń przed makrami możesz wywołać na dwa sposoby.

Pierwszym z nich jest kliknięcie symbolu Office'a, znajdującego się w lewym górnym rogu aplikacji, a następnie przycisku Opcje programu Excel (oba te elementy zostały zaznaczone na czerwono na poniższym rysunku).

Jak uruchomić okno zabezpieczeń przed makrami? (Excel 2007)

Na ekranie pojawi się okno takie, jak pokazano poniżej. Z listy opcji znajdującej się z jego lewej strony, wybierz polecenie Centrum zaufania, a następnie kliknij przycisk Ustawienia centrum zaufania ... (zaznaczony na czerwono).

Jak uruchomić okno zabezpieczeń przed makrami? (Excel 2007)

Teraz na ekranie pojawi się właściwe okno zabezpieczeń przed makrami. W panelu opcji, umieszczonym z lewej strony, wybierz sekcję Ustawienia makr:

Poziomy zabezpieczeń przed makrami w Excelu 2007

To samo okno możesz wyświetlić klikając odpowiedni przycisk na wstążce Deweloper. W tym celu musisz najpierw uaktywnić wstążkę Deweloper, a potem przejść do tej wstążki i kliknąć przycisk Bezpieczeństwo makr, zaznaczony na rysunku na czerwono.

Jak uruchomić okno zabezpieczeń przed makrami z poziomu wstążki? (Excel 2007)

W prawej części okna zabezpieczeń przed makrami wyświetlone są wszystkie dostępne poziomy zabezpieczenia przed makrami (oznaczone zieloną ramką):
  • Wyłącz wszystkie makra bez powiadomienia

    Przy wyborze tej opcji nie jest możliwe uruchamianie makr w Excelu, nawet jeżeli będą one podpisane cyfrowo - oczywiście przy nauce pisania makr ta opcja jest całkowicie wykluczona.

  • Wyłącz wszystkie makra i wyświetl powiadomienie

    Opis tej opcji jest nieco mylący, gdyż również sugeruje, że korzystanie z makr nie będzie możliwe. W rzeczywistości po ustawieniu tej opcji, przy każdym otwarciu pliku zawierającego makra, użytkownik sam może zadecydować czy Excel ma zezwolić na ich uruchamianie. Jest to najbardziej zalecana opcja, ponieważ w każdej sytuacji możesz sam decydować czy chcesz uruchomić makro w danym pliku.

    W zależności od rodzaju otwieranego pliku, na ekranie mogą pojawić się dwa rodzaje ostrzeżeń.
    Kiedy użytkownik otwiera plik zapisany w formacie *.xlsm (czyli Skoroszyt programu Excel 2007 z obsługą makr), plik jest normalnie otwierany, ale w części pomiędzy paskiem zadań a paskiem formuł zostaje wyświetlona informacja o obecności w pliku makr:

    Ostrzeżenie o obecności makr w pliku (Excel 2007)

    W momencie włączenia pliku makra są domyślnie wyłączone. Jeżeli chcesz z nich korzystać musisz kliknąć przycisk Opcje ..., a następnie w oknie, które pojawi się na ekranie, wybrać opcję Włącz tę zawartość.

    Pytanie o zezwolenie na korzystanie z makr w pliku (Excel 2007)

    W przypadku pozostałych typów plików, przed otwarciem pliku na ekranie pojawia się okno takie jak poniżej:

    Pytanie o uruchomienie makra (Excel 2007)

  • Wyłącz wszystkie makra oprócz makr podpisanych cyfrowo

    W tej sytuacji Excel będzie pozwalał na uruchamianie tylko tych makr, które posiadają podpis cyfrowy. Ponieważ podczas tego kursu będziesz tworzył i uruchamiał bardzo wiele makr, każdorazowe podpisywanie ich cyfrowo byłoby marnotrawstwem czasu. W dalszej części kursu zostanie jednak opisany sposób na stworzenie dla makra cyfrowego podpisu.

  • Włącz wszystkie makra

    Po zaznaczaniu tej opcji Excel będzie uruchamiał makra w każdym pliku bez pytania Cię o zgodę i nie informując nawet, że plik ten zawiera jakieś makra.
    Opcja ta nie jest zalecana, ponieważ możesz natrafić na plik zawierający makro wyrządzające szkody, nie wiedząc nawet o tym, że zostało ono uruchomione.

Żeby zmienić ustawienia zabezpieczeń przed makrami w Excelu 2003, kliknij następujące polecenia na pasku menu:

  • Narzędzia
  • Makro
  • Zabezpieczenia

Jak zmienić zabezpieczenia przed makrami? (Excel 2003)

Na ekranie zostanie wyświetlone okno takie, jak na poniższym obrazku.

Okno zabezpieczeń przed makrami

Jak widać, poziom zabezpieczeń przed makrami może być ustawiony na trzy sposoby:

  • Wysokie

    W tym przypadku Excel będzie uruchamiał tylko makra zarejestrowane jako bezpieczne. Z uwagi na to, że ucząc się pisania makr będziesz ich tworzył i uruchamiał bardzo wiele, szkoda czasu na rejestrowanie ich jako bezpieczne, tak aby Excel mógł je uruchomić - więc ta opcja odpada.

  • Średnie

    Jeżeli otwierasz plik i Excel stwierdzi, że w pliku tym znajdują się jakieś makra, wyświetli okno takie jak poniżej:

    Plik zawiera makra. Pytanie o uruchomienie makra (Excel 2003)

    To jest właśnie zalecana opcja - w każdej sytuacji będziesz sam decydował czy chcesz uruchomić makra w danym pliku.

  • Niskie

    Po zaznaczaniu tej opcji Excel będzie uruchamiał makra w każdym pliku bez pytania Cię o zgodę i nie informując nawet, że plik ten zawiera jakieś makra.

    Opcja ta nie jest zalecana, ponieważ możesz natrafić na plik zawierający makro wyrządzające szkody, nie wiedząc nawet o tym, że zostało ono uruchomione.

Uruchamianie Edytora VBA

Edytor makr można uruchomić na kilka sposobów:

  • Kliknięcie skrótu Alt+F11 w oknie Excela
  • Wybór odpowiedniego polecenia z paska menu (z uwagi na to, że w Excelu 2007 nie ma paska menu, ta możliwość jest dostępna tylko w wersji 2003 i wcześniejszych)

    Aby uruchomić Edytor VBA z poziomu paska menu kliknij następujące opcje:
    • Narzędzia
    • Makro
    • Edytor VBA

    Uruchomienie Edytora VBA z poziomu paska menu

  • Kliknięcie ikony na pasku narzędzi Excela

    Żeby skorzystać z tego sposobu uruchamiania edytora VBA, musisz dodać do widocznych pasków narzędzi pasek odpowiedzialny za VBA.

    W Excelu 2003 możesz tego dokonać wybierając na pasku menu:
    • Widok
    • Paski narzędzi ...
    i aktywując opcję VBA (tak jak na rysunku poniżej).

    Aktywacja paska narzędzi VBA z poziomu paska menu Excela

    W momencie aktywowania tej opcji, wśród widocznych pasków narzędzi pojawi się dodatkowy pasek:

    Pasek narzędzi VBA z zaznaczoną ikoną uruchamiania Edytora VBA

    Ikona odpowiedzialna za uruchamianie Edytora VBA została zaznaczona na powyższym rysunku na czerwono.

    W Excelu 2007 aby uaktywnić kartę VBA na wstążce, musisz najpierw otworzyć okno odpowiedzielne za ustawienia Excela. W tym celu kliknij symbol Office'a, znajdujący się w lewym górnym rogu aplikacji, a następnie przycisk Opcje programu Excel (oba elementy zostały zaznaczone na czerwono na poniższym rysunku).

    Uruchamianie okna z zabezpieczeniami przed makrami (Excel 2007)

    W oknie opcji, zaprezentowanym na zrzucie ekranowym poniżej, wybierz najpierw sekcję Popularne, a następnie zaznacz pole Pokaż kartę Dewelopera na wstążce jako aktywne.

    Aktywacja paska VBA na wstążce w Excelu 2007

    Przycisk odpowiedzialny za uruchamianie edytora VBA położony jest z lewej strony na karcie Deweloper.

    Pasek VBA w Excelu 2007

Opis Edytora VBA

Zanim przejdziemy do omówienia edytora VBA, byłoby dobrze, żebyś dostosował jego wygląd do potrzeb tego kursu. Chodzi głównie o to, abyś miał widoczne te paski narzędzi, które będą wykorzystywane podczas kursu.

W tym celu wybierz na pasku menu edytora
  • View
  • Toolbars
i zaznacz jako aktywne paski Edit oraz Standard.

Dostosowanie pasków narzędzi edytora VBA

Po aktywowaniu obu wspomnianych pasków narzędzi, edytor VBA wygląda tak, jak na poniższym rysunku. Podstawowe części edytora zostały zaznaczone kolorowymi ramkami.

Wygląd edytora VBA

Zieloną ramką została oznaczona część Properties.

Jeżeli nie widzisz jej w swoim edytorze, kliknij ikonę zaznaczoną na powyższym rysunku na zielono lub klawisz F4.

Ramka ta umożliwia odczytywanie i zmianę właściwości różnych obiektów VBA.

Sekcja Properties najczęściej wykorzystywana jest przy tworzeniu graficznych interfejsów użytkownika, dlatego do jej szczegółowego omówienia powrócimy przy okazji omawiania tego tematu.

Drugim ważnym elementem edytora VBA jest część Project, oznaczona na rysunku czerwoną ramką.
Jeżeli nie widzisz w swoim edytorze ramki Project, kliknij ikonę zaznaczoną na rysunku na czerwono lub kombinację klawiszy Ctrl+R.

W tej sekcji edytora przedstawione są wszystkie komponenty otwartego projektu VBA.

Każdy projekt VBA może składać się z następujących części (w dalszej części kursu wykorzystywane będą polskie nazwy, wypisane w nawiasach):
  • Microsoft Excel Object (obiekty Excela)

    Są to wszystkie elementy związane z normalną obsługą Excela, czyli arkusze i wykresy.

    Czasem może się zdarzyć, że w edytorze VBA widocznych będzie więcej arkuszy niż w normalnym widoku Excela - wynika to z faktu, że niektóre arkusze mogą być ukryte i nie są widoczne w normalnym widoku, natomiast w edytorze VBA pokazane są wszystkie arkusze bez względu na to, czy są ukryte czy nie.

  • Forms (formularze)

    Graficzne interfejsy użytkownika - ich szczegółowy opis znajdziesz w dalszej części kursu.

  • Modules (moduły)

    Moduły to podstawowe i najbardziej uniwersalne obiekty do przechowywania kodu VBA.

    W pierwszych lekcjach będziesz tworzyć kod właśnie w modułach, dlatego poniżej znajdziesz instrukcję wstawiania nowego modułu.

  • Class Modules (moduły klas)

    Najbardziej skomplikowany obiekt edytora VBA. Po ukończeniu całego kursu większość kodu będziesz umieszczał właśnie w modułach klas. Na razie jest jednak jeszcze za wcześnie, nawet na to, by wytłumaczyć ich zastosowanie. Moduły klas, podobnie jak graficzne interfejsy użytkownika, zostaną szczegółowo omówione w dalszej części kursu.

Jeżeli w oknie Project swojego edytora VBA nie widzisz omówionych wyżej sekcji, nie przejmuj się, wszystko jest w należytym porządku - po prostu powyższy print screen został wykonany na pliku, w którym wcześniej te komponenty zostały dodane.

Domyślnie po otwarciu nowego pliku w tym miejscu znajduje się tylko grupa Microsoft Excel Objects (a jeżeli żaden plik nie jest aktualnie otwarty, nawet ta grupa nie jest widoczna).

Nie czas teraz, ani miejsce na szczegółowe omawianie powyższych elementów oraz różnic między nimi. Na razie załóżmy, że cały kod obsługujący makra przechowywany jest w modułach, a z biegiem czasu, kiedy Twoja wiedza o VBA będzie już zdecydowanie większa, pojawiać się będą pozostałe elementy wraz z wyjaśnieniem ich zastosowania.

Edytor VBA oferuje jeszcze kilka innych okienek, bardzo przydatnych podczas pisania programów, ale podobnie jak w przypadku powyższych typów obiektów, omówimy je dopiero w dalszej części kursu, ponieważ teraz wprowadziłyby tylko niepotrzebne zamieszanie. Prawdopodobnie uznałbyś je w tym momencie za zupełnie bezużyteczne i po chwili zupełnie zapomniał o ich istnieniu.

Jest jednak jeszcze jeden element, o którym należy wspomnieć już teraz - szare pole, które widzisz w centralnej części edytora. Jest ono jakby kartką, na której wypisywany jest cały kod. Na razie jest ono jednak nieaktywne, ponieważ do pliku nie został jeszcze wstawiony żaden moduł.

Wstawianie nowych modułów do projektu VBA będzie tematem kolejnego podrozdziału.

Dodawanie nowego modułu

Każdy moduł dołączany jest do zwykłego pliku Excela, więc aby stworzyć nowy moduł musisz najpierw otworzyć nowy lub istniejący plik Excela.
Po otwarciu nowego pliku, w oknie Project widzisz tylko sekcję Microsoft Excel Objects zawierającą tyle arkuszy, ile liczy otwarty przez Ciebie plik Excela (a więc prawdopodobnie 3).

Aby dodać nowy moduł, należy wybrać z paska menu polecenia
  • Insert
  • Module

Dodawanie nowego modułu

Po wybraniu tej opcji, na szarym polu w centralnej części edytora pojawi się okienko nowego modułu, a na liście w części Project nowy moduł o nazwie Module1.

Okno nowego modułu

Jeżeli chcesz zmienić nazwę modułu, wejdź w pole (Name) w sekcji Properties (oznaczone na powyższym rysunku czerwoną ramką) i po prostu wpisz nową nazwę.

Okno modułu znajdujące się w centralnej części edytora można maksymalizować i minimalizować klikając dwukrotnie na jego nagłówek (oznaczony fioletową ramką) lub klikając w ikonkę minimalizacji i maksymalizacji z prawej strony tego nagłówka.

Zakładanie hasła na projekt VBA

Zazwyczaj dobrze jest uniemożliwić użytkownikom pliku oglądanie szczegółów kodu, a przede wszystkim ingerowanie w jego zawartość.

W tym celu można założyć hasło chroniące przed dostępem niepowołanych osób do kodu VBA.

Żeby założyć hasło, kliknij prawym klawiszem myszy na nazwę projektu w oknie Project i wybierz z menu polecenie VBAProject Properties... .

Włączanie okna właściwości projektu

Na ekranie zostanie wyświetlone okno takie, jak na poniższym rysunku:

Zakładanie hasła na projekt VBA

Wybierz w tym oknie zakładkę Protection, zaznacz pole wyboru Lock project for viewing, a następnie w dolnej części okna dwukrotnie wpisz hasło zabezpieczające przed dostępem do pliku. Potem kliknij przycisk OK i zapisz plik.

Od tego czasu, aby zajrzeć do kodu VBA dołączonego do tego projektu, trzeba będzie najpierw wpisać hasło.

Ustawienia ułatwiające pracę w edytorze VBA

Na koniec pierwszej lekcji przedstawię kilka ustawień, które powinieneś zmienić w opcjach edytora VBA, aby pozbyć się jego irytujących ustawień domyślnych.

Aby uruchomić okno z opcjami ustawień edytora VBA wybierz z paska menu polecenie:
  • Tools
  • Options ...

Uruchamianie okna opcje VBA

W oknie, które pojawi się na ekranie, wybierz zakładkę Editor i ustaw wszystkie pola dokładnie tak, jak jest to pokazane na poniższym rysunku.

Ustawienia opcji edytora VBA

Najważniejszą kwestią jest tutaj odznaczenie opcji Auto Syntax Check. Jeżeli opcja ta jest zaznaczona, za każdym razem gdy wpiszesz jakąś błędną komendę (np. z powodu literówki), edytor VBA wyświetla na środku ekranu okno z komunikatem o błędzie, któremu towarzyszy głośny sygnał dźwiękowy, co po jakimś czasie staje się naprawdę irytujące.
Po odznaczeniu tej opcji, edytor nadal informuje o nieprawidłowościach w kodzie, ale robi to w bardziej przyjazny sposób - podświetlając jedynie błędny fragment kodu na czerwono.

Jeżeli nie podobają się Tobie czcionki lub kolory, w jakich wyświetlany jest wpisywany przez Ciebie kod VBA, możesz je zmienić również w tym oknie, wchodząc do zakładki Editor Format.