VBA w Excelu - kurs dla początkujących
Automatyzacja czynności
Zanim jeszcze samodzielnie zaczniemy pisać programy, naszą przygodę z programowaniem w VBA rozpoczniemy od zautomatyzowania często powtarzanych czynności. Jeżeli jakieś czynności są często powtarzane w programie Microsoft Excel, można je zautomatyzować przy użyciu makra. Makro jest serią poleceń i funkcji, które są przechowywane w module Visual Basic i mogą być uruchomione zawsze, gdy zachodzi potrzeba wykonania danych czynności. Oczywiście odpowiednie makro należy wcześniej utworzyć. Bez względu na to jaka jest Twoja wiedza na temat VBA (praktycznie żadnej wiedzy nie musisz posiadać w tym temacie), możesz skorzystać z pewnego narzędzia do tworzenia makr tj. Rejestratora makr.
· makro - napisany lub zarejestrowany program przechowujący szereg poleceń Microsoft Excel, którego można później użyć jako pojedynczego polecenia. Makra są przeznaczone do automatyzacji złożonych zadań i zmniejszania liczby kroków wymaganych do wykonania często powtarzających się zadań. Makra są rejestrowane w języku programowania Visual Basic for Applications. Makra można także pisać bezpośrednio korzystając z edytora Visual Basic
Jak już wspomniałem makra rejestrujemy za pomocą Rejestratora makr. Rejestrator ma pewne wady, o których przekonasz się w miarę nabywania doświadczenia. Ma jednak niepodważalną zaletę nie popełnia błędów składni często spotykanych u początkujących programistów. Rejestrowanie makra a następnie przeglądanie kodu jest też dobrym sposobem nauki języka VBA. Ja osobiście często korzystam z Rejestratora makr do napisania jakiegoś fragmentu kodu który sprawia mi trudność lub w celach poznawczych. Rejestrowanie makra możemy porównać do nagrywania muzyki przy użyciu magnetofonu. Tak jak nagraną muzykę możemy później odtworzyć tak samo, aby powtórzyć zarejestrowane wcześniej polecenia można uruchomić makro. Przed przystąpieniem do zarejestrowania makra, dobrze jest zaplanować kolejne kroki i polecenia, które makro ma wykonywać. Jeśli podczas rejestracji zostanie popełniony błąd, wykonane poprawki będą także zarejestrowane.
Sposób rejestrowania makr najlepiej przedstawić na przykładzie. Poniżej zarejestrujemy makro którego zadaniem będzie wyczyszczenie zawartości kilku oddzielnych komórek (lub zakresów komórek) w arkuszu Excela. Aby zarejestrować nasze makro wykonaj następujące czynności:
Sposób klasyczny:
1. Z menu Narzędzia wybierz Makro następnie kliknij na polecenie Zarejestruj nowe makro....
2. Powinno się otworzyć okno Rejestruj makro (patrz rysunek poniżej). W oknie tym możesz ustawić następujące opcje rejestrowanego makra:
o W polu Nazwa makra: wpisz nazwa dla nowego makra (na przykład: Czyszczenie).
o W polu Klawisz skrótu: możesz określić skrót klawiaturowy po naciśnięciu którego makro zostanie uruchomione. Ponieważ nasze makro będzie uruchamiane w inny sposób pole te pozostawiamy bez zmian.
o Przechowuj makro w: w polu tym po wybraniu z listy możesz określić miejsce przechowywania a tym samym dostępność makra. W naszym przypadku pole te też pozostawiamy bez zmian.
o W polu Opis: możesz zmienić opis makra. Domyślnie Excel umieszcza tam datę zarejestrowania makra oraz dane autora.
3. Kliknij na przycisk OK aby rozpocząć rejestrację.UWAGA: od tego momentu wszystkie czynności jakie wykonasz w arkuszu będą zarejestrowane.W obrębie arkusza powinien się pojawić specjalny pasek poleceń z dwoma przyciskami: Zatrzymaj rejestrowanie i Odwołanie względne.
o Przycisk Zatrzymaj rejestrowanie umożliwia zakończenie rejestrowania makra w odpowiednim dla Ciebie momencie.
o Wciśniecie przycisku Odwołanie względne spowoduje że adresy komórek będą zapisywane względnie. Jeśli więc przemieścimy się z komórki A1 do B3, Excel zapamięta to jako przejście z komórki znajdującej się o jedną kolumnę w prawo i dwa wiersze w dół. Dzięki temu możemy tworzyć makro, które będzie na przykład wpisywało dowolny tekst w komórce obok tej która jest aktywna w momencie uruchomienia makrodefinicji.
4. Pora na wykonanie odpowiednich czynności które będzie wykonywało nasze makro.
o Umieść kursor myszy na przykład w komórce B2 arkusza a następnie naciśnij przycisk Delete na klawiaturze.
o Powtórz te czynność jeszcze dla kilku komórek arkusza lub zakresów komórek.
5. Po wykonaniu odpowiednich kroków kliknij na przycisk Zatrzymaj rejestrowanie.
Za pomocą paska narzędzi Visual Basic:
Innym sposobem którego ja używam jest uruchomienie rejestracji makra z poziomu paska narzędzi Visual Basic. Pasek ten przedstawiłem na stronie pasek narzędzi Visual Basic. W pasku tym znajduje się na między innymi przycisk Zarejestruj makro pozwala on na zarejestrowanie (nagranie, utworzenie) nowego makra.
1. Z menu Widok wybierz Paski narzędzi a następnie opcje Visual Basic, (jeżeli pasek nie jest widoczny).
2. Z paska narzędzi Visual Basic wybierz przycisk Zarejestruj makro.
3. Powinno się otworzyć okno Rejestruj makro w oknie tym ustaw odpowiednie opcje.
4. Wykonaj pozostałe czynności jak w sposobie opisanym powyżej.
5. Aby zakończyć rejestrowanie makra kliknij na przycisk Zatrzymaj rejestrowanie, który znajduje się w miejscu przycisku Zarejestruj makro w pasku narzędzi Visual Basic.
Uwaga: Aby zatrzymać rejestrowanie makra możemy użyć przycisku Zatrzymaj rejestrowanie zarówno z paska narzędzi Visual Basic lub jak w pierwszym sposobie z paska Zatrzymaj rejestrowanie.
Utworzyliśmy makro które czyści zawartość określonych komórek arkusza, aby zarejestrowane czynności mogły być automatycznie wykonane nasze makro należy uruchomić. Zarejestrowane makra można uruchomić na wiele sposobów. Do uruchomienia makra możemy wykorzystać odpowiednie paski narzędzi różnego rodzaju obiekty czy zdarzenia lub też inne makro. Sposób uruchamiania zależy od wiedzy i inwencji autora makra oraz konkretnych potrzeb. Poniżej przedstawiam niektóre sposoby uruchamiania makra.
Tradycyjny start:
1. Z menu Narzędzia wybierz Makro a następnie kliknij na polecenie Makra... (lub wciśnij Alt+F8).
2. W nowo otwartym oknie dialogowym Makro (patrz rysunek poniżej) zaznacz odpowiednią nazwę makra (w naszym przypadku: Czyszczenie) i kliknij na przycisk Uruchom. Zostanie uruchomione makro które wykona wszystkie czynności jakie wykonywaliśmy podczas jego rejestracji.
Za pomocą okna dialogowego Makro po kliknięciu na odpowiedni przycisk możemy wykonywać różne czynności związane z makrem. Jeżeli chcemy na przykład przeglądać lub modyfikować kod makra, klikamy na przycisk Edycja.
2. Z paska narzędzi Visual Basic wybierz przycisk Uruchom makro.
3. W nowo otwartym oknie dialogowym Makro zaznacz odpowiednią nazwę makra (czyli: Czyszczenie) i kliknij na przycisk Uruchom.
Za pomocą obiektu graficznego:
Jak już wspomniałem makra możemy uruchamiać na wiele sposobów, możemy w tym celu wykorzystać też różnego rodzaju obiekty graficzne. Poniżej przedstawiam sposób uruchomienia makra za pomocą obiektu WordArt.
1. Z menu Wstaw wybierz Obraz (Rysunek) a następnie opcje WordArt....
2. W oknie Galeria WordArt wybierz odpowiedni styl i naciśnij OK.
3. W następnym oknie Edytuj WordArt w polu Tekst: wpisz na przykład: WYCZYŚĆ i naciśnij przycisk OK.
4. Dopasuj jeszcze rozmiar i położenie obiektu WordArt.
5. Umieść kursor myszy na naszym tekście (obiekcie WordArt) następnie kliknij prawym przyciskiem myszy i menu podręcznego wybierz Przypisz makro....
6. W nowo otwartym oknie dialogowym Przypisz makro zaznacz odpowiednią nazwę makra (w naszym przypadku: Czyszczenie) i kliknij na przycisk OK.
7. Kliknij lewym przyciskiem myszy na obiekt WordArt celem uruchomienia makra.
Jeżeli w oknie dialogowym Przypisz makro klikniemy na przycisk Edycja możemy również przeglądać i modyfikować kod makra.
Aby przetestować nasz przykład zarejestruj makro, wprowadź jakieś wartości do komórek arkusza które makro będzie czyściło a następnie wykorzystując odpowiedni sposób uruchom makro. Spróbuj też samodzielnie zarejestrować i uruchomić kilka innych makr.
· Więcej informacji na temat makr uzyskasz korzystając z pomocy Microsoft Excel.
· Jeżeli masz uwagi to proszę poinformuj mnie o tym. Każda uwaga czy opinia jest dla mnie bardzo cenna.
· Poszukuję informacji na temat VBA mogą to być kursy, tytuły książek czy adresy stron internetowych. Jeżeli posiadasz własną stronę nie koniecznie na temat VBA to proszę podaj mi jej adres.
bolo882