VBA
Wprowadzenie
Przykłady opisane w tej lekcji dostępne są w arkuszu Excela:
VBA.xls, tylko ich samodzielne
przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel 2003: ExcelSzkolenie.pl
Cwiczenia Excel 2003.zip
Aby uzyskać dostęp do Ekranu
pozwalającego nam na przeglądanie i zmienianie kodu VBA wciskamy kombinację
klawiszy ‘Alt+F11’.
Wyświetlony zostanie ekran
wyglądający najprawdopodobniej tak jak poniżej. Jeżeli układ okienek jest inny,
przywrócimy go takiego stanu.
Okna i polecenia Visual Basic są w
języku angielskim nawet, jeśli Excel, którego używamy jest w wersji polskiej.
Aby zobaczyć okno przedstawiające
aktualnie otwarte w Excelu pliki, arkusze znajdujące się w nich oraz inne
obiekty, które opiszę bliżej w dalszej części kursu należy wybrać z Menu : View
→ Project Explorer
Aby pokazać okno z kodem makr należy
wybrać z Menu: ‘View’ → ‘ Code’
Istnieje też wiele innych okien,
które będę prezentował w dalszej części kursu. Dwa opisane powyżej są
najczęściej używane i zawsze powinny być widoczne.
Operacje na Modułach
W oknie ‘Project – VBAProject’
poruszamy się klikając symbole ‘+’/’-‘ oraz poszczególne obiekty, które nas
interesują. Obiektami tymi będą aktualnie otwarte pliki Excela, plik
Personal.xls oraz dodatki, które możemy rozpoznać po rozszerzeniu XLA.
Dodatki są w większości przypadków
efektem aktualizacji Excela i nie będziemy mieć do nich dostępu, zaawansowani
programiści VBA mogą także tworzyć swoje dodatki.
Plik Personal.xls tworzony jest
automatycznie podczas nagrywania pierwszego makra na komputerze, na którym
pracujemy, jeśli wybierzemy aby zostało ono nagrane w tym pliku.
Plik ten od tej pory otwierany jest
automatycznie przy każdym otwarciu Excela i służy do przechowywania makr, do
których zawsze chcielibyśmy mieć dostęp.
Makra są najczęściej przechowywane w
Modułach. Jeżeli nagrywamy makro, nowy moduł dodawany jest automatycznie do
pliku, w którym chcemy przechowywać makro.
Moduł możemy także dodać ręcznie
wybierając z Menu: Insert → Module.
Aby usunąć moduł, którego nie
potrzebujemy klikamy go prawym klawiszem i wybieramy opcję ‘Remove [nazwa
klikniętego modułu]...’
Zostaniemy zapytani czy chcemy
przenieść gdzieś moduł przed wykasowaniem go. Jeśli chcemy skasować moduł
wybieramy opcję ‘Nie’
Jeszcze raz dodamy moduł i zmienimy
jego nazwę.
Aby zmienić nazwę modułu dodamy
kolejne okno do obecnego widoku.
Wybieramy z Menu: ‘View’ →
‘Properties Window’
Wielkość wszystkich okien możemy
regulować przeciągając ich granice, co na poniższym rysunku zaznaczone jest
kółkiem i strzałką.
W oknie ‘Properties’ w miejscu
zaznaczonym czerwonym prostokątem wprowadzamy nową nazwę modułu, nazwa nie może
zawierać znaków spacji, z reguły zastępuje się je znakiem dolnego myślnika _.
Proponuję zamknąć plik Excela na
którym ćwiczyliśmy bez zapisywania zmian i otworzyć plik VBA.xls oraz utworzyć
nowy plik Excela (Zeszyt1).
W pliku VBA.xls
znajdują się moduły, których nazwy odpowiadają nazwom lekcji kursu VBA.
Zamykamy znakiem minusa Microsoft
Excel Objects i otwieramy Modules dla pliku VBA.
Podwójny klik na moduł
‘Funkcja_MsgBox’, wyświetli z prawej strony ekranu, kod makr znajdujących się w
nim.
Po tych zmianach Okno Microsoft
Visual Basic powinno wyglądać (mniej więcej) tak jak poniżej.
Aby skopiować moduł ‘Funkcja_MsgBox’
do pliku ‘Zeszyt1’ wystarczy przeciągnąć ten moduł (lewym klawiszem myszy) na
nazwę arkusza w którym chcielibyśmy aby się znalazł.
Moduł wraz z makrami, które zawiera
zostanie skopiowany do nowego pliku. Efekt tego widać poniżej, zbiór modułów w
Zeszycie1 został otwarty kliknięciem w ikonę +.
Jeżeli w pliku, do którego kopiujemy
znajduje się już moduł o takiej nazwie do nazwy nowego zostanie dodana cyfra
‘1’.
Operacje na Makrach
Jeżeli dwukrotnie klikniemy na nazwie
jednego z modułów np. na ‘Funkcja MsgBox’, kody makr znajdujące się w tym
module zostaną wyświetlone.
Proste makra zaczynają się od
określenia ‘Sub’ po którym następuje nazwa makra oraz pusty nawias, kończą się
natomiast słowami End Sub.
Poszczególne makra oddzielone są
poziomymi liniami.
Do pliku ‘Zeszyt1’ dodajmy moduł i
zmieńmy jego nazwę na ‘Moje_Makra’.
Aby przekopiować makro
‘MsgBox_Przyklad_1’ z modułu ‘Funkcja_MsgBox’ do nowo utworzonego modułu
‘Moje_Makra’ w pliku ‘Zeszyt1’, należy:
1. Zaznaczyć tekst całego makra
2. Skopiować go (‘Ctrl’+C),
3. Dwukrotnie kliknąć moduł docelowy (Moje_makra)
5. Wkleić makro (‘Ctrl’+ V) w oknie kodu (z prawej strony).
W efekcie wyżej opisanych czynności
makro zostanie skopiowane do modułu ‘Moje_Makra’ oraz wyświetlone w oknie Code.
Pewne typy makr opisanych w dalszych
lekcjach muszą znajdować się w Arkuszach lub ThisWorkbook.
Operacje na makrach przeprowadzane w
Arkuszach lub ThisWorkbook niczym nie różnią się od operacji na makrach
znajdujących się w modułach.
Szkolenie Excel 2003 Szkolenie Excel 2007