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

Excel - makra i VBA


Rejestrator makr

Załącznik z przykładami dla tego rozdziału znajduje się w tym miejscu.

Najważniejszą rzeczą, którą musimy sobie uświadomić przed rejestracją makra jest fakt, iż rejestrator zapisze dokładnie każdą czynność, którą wykonamy - łącznie z przewijaniem ekranu, przełączaniem się pomiędzy arkuszami itd. - nawet jeśli czynności te nie mają wpływu na końcowy efekt poleceń, które są istotą zadania. Spróbujemy zobrazować ten fakt, rejestrując wcześniej przytoczony przykład: nagramy makro, które formatuje tą komórkę (kolorując ją na żółto) oraz wpisuje do dodanej komórki wartość 1 na dwa sposoby:
- zarejestrujemy czynność wpisania formatowania i wpisania wartości po wybraniu określonej komórki,
- zarejestrujemy samą czynność formatowania i wpisania wartości.
Następnie skupimy się na różnicach w działaniu nagranych makr.

Uruchamiamy rejestratora makr:




Pojawi się następujące okno:



Nie skupiamy się w tym miejscu na opcjach (ewentualnie podajemy bardziej przyjazną nazwę, pamiętając aby nie zawierała spacji ani znaków specjalnych, jak i polskich liter), klikamy po prostu "OK". Zauważmy, że w miejscu gdzie uruchomiliśmy rejestrator pojawiło się polecenie umożliwiające zatrzymanie rejestracji:



Od tego momentu, wszystko co będziemy robić zostanie zapisane w aktualnie zapisywanym makrze. Kliknijmy więc myszką na komórkę B10, a następnie ustawmy tło na kolor żółty i wpiszmy do niej liczbę 1:



Następnie zatrzymajmy rejestrację makra.

W tym momencie powtórzmy nasze czynności, czyli zarejestrujmy kolejne makro ale bez wybierania innej komórki - czyli uruchamiamy rejestrator, klikamy "OK", kolorujemy komórkę (prawym klawiszem myszy i polecenie "Formatuj"), wpisujemy liczbę 1 i kończymy rejestrację. Jeśli jest nam wygodniej, możemy przed włączeniem rejestratora wybrać inną komórkę, ale nie róbmy tego w trakcie rejestracji.

Zobaczmy teraz na zarejestrowane makra: możemy je wyświetlić za pomocą polecenia Makra umieszczonego na karcie Deweloper wstążki:




Wyświetli się okno dialogowe, które przede wszystkim daje nam dostęp do zarejestrowanych makr. Dodatkowo, możemy w nim ustawić dodatkowe funkcjonalności, ale o tym później:



Na tym etapie interesują nas tylko dwa polecenia: Uruchom i Usuń. Drugie z nich zwyczajnie skasuje zapisane makro, pierwsze spowoduje jego uruchomienie. Wyczyśćmy więc zawartość bieżącego arkusza i uruchommy "Makro1":



Makro wykonało przejście do komórki B10 aktywnego arkusza (powtórzmy czynność w innym arkuszu, aby sprawdzić), następnie zmieniło tło na żółte i wpisało do niej liczbę 1. Zaznaczmy może teraz dowolną inną komórkę (u nas będzie to C5) i uruchamiamy "Makro2":



Makro wypełniło bieżącą komórkę, a nie komórkę B10. Potem zaznaczyło komórkę B11 - ale tylko dlatego, że ta czynność także została nagrana.

Resaumując: jako, że w pierwszym makrze czynność wybrania komórki wykonaliśmy na początku, kolejne uruchomienia makra będą ją powtarzały, w wyniku czego zawsze formatowanie i wpisywanie wartości odbędzie się w komórce B10. W drugim przypadku formatowanie odbyło się najpierw, a dopiero potem klikając klawisz Enter po wpisaniu liczby 1, spowodowaliśmy wybór innej komórki (co też się nagrało i jest odtwarzane) - dzięki temu formatowanie i wpis odbędzie się zawsze w komórce, która jest akurat zaznaczona.

Takie właśnie podejście jak w drugim przypadku powoduje, że makro jest bardziej uniwersalne - czyli dokona kolorowania i wpisu w dowolnym miejscu skoroszytu, w którym zostało zapisane. Analogicznie należy postępować, tworząc innego rodzaju makra - rejestrując inne czynności i polecenia: w zależności od potrzeb, trzeba pamiętać, aby makro nie rejestrowało czynności, które nie są pożądane (a można to uczynić jedynie poprzez ich nie wykonywanie podczas procesu nagrywania makra).
W dalszej części powrócimy do zagadnień związanych z modyfikowaniem kodu makra - dzięki czemu nawet makro "źle" nagrane będziemy potrafili skłonić do działania takiego jak chcemy.