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

Excel - makra i VBA


Prosta modyfikacja makra

W ostatnim rozdziale tej części kursu, zajmiemy się chwilę nagranym makrem od strony jego kodu. Nie będziemy jeszcze tworzyć/pisać programu od początku, ale spróbuję zainteresować czytelnika na tyle, aby miał ochotę poznać bliżej język VBA omówiony w dalszych rozdziałach.
Pamiętamy okno, które uruchamiane było poleceniem Makra na kacie Deweloper wstążki:




Mamy w nim polecenie Edycja - jak widać powyżej. Po jego użyciu otworzy się zupełnie nowe okno, które jest tak naprawdę środowiskiem programistycznym języka VBA:



W kolejnej części tego kursu omówimy bliżej elementy tego interfejsu. Na ten moment jednak skupmy się na samym kodzie nagranych makr (korzystamy z pliku, który powstawał podczas prezentacji rejestratora makr). Kod ten jest umieszczony po prawej stronie w oknie na białym tle. Mamy jakby dwie sekcje, które zachowują wspólne cechy: zaczynają i kończą się określeniami Sub i End Sub. Są to początki i zakończenia procedur - tak, makra nie są niczym innym jak obiektami nazywanymi w języku VBA (i innych) procedurami. Zauważmy, że po sformułowaniu Sub pojawiają się nazwy naszych zarejestrowanych makr: "Makro1" oraz "Makro2" - jeśli zmienimy je, zmienią się też one w oknie makr wyświetlanym już wcześniej.
Apostrofem (jednocześnie na tekst jest zielony) oznaczone są linijki z komentarzami - możemy dodać dowolną liczbę takich linii w dowolnym miejscu - nawet na końcu linii z kodem. Tekst po apostrofie będzie pomijany podczas wykonania makra.
Dalsza część procedur (makr) to już są konkretne polecenia napisane (nagrane) w języku VBA. W obu przypadkach są one dosyć podobne. Oba zawierają sekcje pomiędzy "With Selection" i "End With", które odpowiadają w tym przypadku za formatowanie, obie mają też polecenia "ActiveCell.FormulaR1C1" odpowiadające za wypełnienie liczbą, w końcu obie też mają polecenie "Range("B11").Select", które oznaczają nic innego niż zaznaczenie określonego obszaru (w tym przypadku konkretnej komórki).
Istotne jest jednak to, że wszystkie te polecenia są umieszczone w różnej kolejności w obu makrach - tak jak inna była kolejność nagrywanych czynności. W pierwszym przypadku procedura skacze do komórki B10, potem dopiero realizując inne polecenia, w drugim polecenia mają priorytet - natomiast wybór komórki B11 odbywa się na samym końcu w wyniku czego nie ma specjalnego wpływu na efekt końcowy wykonanego makropolecenia.

Zauważyć więc można, iż gdybyśmy chcieli zupełnie przekształcić makro do takiego, które po prostu tylko koloruje i wpisuje liczbę w aktywną komórkę, wystarczyłoby usunąć linię z poleceniem "Range("B11").Select".
W ten prosty sposób skorygowaliśmy swoje pierwsze makro - dodajmy, że usuwając tekst pomiędzy Sub i End Sub, usuwamy po prostu całe, określone makro:




Na koniec warto wspomnieć, iż nawet nie znając specjalnie języka programowania VBA, nagrywając poszczególne czynności i potem oglądając składnię języka, można zbudować całkiem skomplikowane makropolecenia - wystarczą podstawy języka angielskiego i trochę cierpliwości. Jednego czego nie jesteśmy w stanie się nauczyć w ten sposób, to deklaracja zmiennych, instrukcje warunkowe i pętle (formularze oraz obsługę baz danych pomijając) - ale te elementy będą omówione w kolejnych rozdziałach niniejszego kursu - stąd czytelnik może także je poznać :)