AUTOMATYZACJA PRACY W EXCELU Tworzenie makro definicji
Definicja makra Makrodefinicja (makra) jest zapisaną sekwencją czynności, którą można uruchomić przez wybranie z listy makr lub wciśnięcie kombinacji klawiszy przypisanej do makra.
Tworzenie makr Użytkownik może tworzyć własne makra uruchamiając polecenia MAKRO/MAKRA z menu Narzędzia Lub przy pomocy VB uruchamiając polecenie Edytor Visual Basic z menu Narzędzia
Nagrywanie nowego makra Tworzenie makr Uruchamianie makra Nagrywanie nowego makra
Tworzenie makr Ustaw poziom zabezpieczeń na Średni lub Niski. W menu Narzędzia kliknij polecenie Opcje. Kliknij kartę Zabezpieczenia. W obszarze Zabezpieczenia makr kliknij przycisk Bezpieczeństwo makr. Kliknij kartę Poziom zabezpieczeń, a następnie wybierz żądany poziom zabezpieczeń. W menu Narzędzia wskaż polecenie Makro, a następnie kliknij polecenie Rejestruj nowe makro. W polu Nazwa makra wprowadź nazwę dla makra. Uwagi Pierwszy znak nazwy makra musi być literą. Inne znaki mogą być literami, liczbami lub znakami podkreślenia. W nazwie makra niedozwolone są spacje; znaki podkreślenia mogą służyć do oddzielania słów. Nie należy używać nazwy makra, która jest także odwołaniem do komórki. W przeciwnym przypadku będzie wyświetlony komunikat o błędzie informujący, że nazwa makra jest nieprawidłowa.
Tworzenie makr Chcąc uruchamiać makro przez naciśnięcie klawisza skrótu, wprowadź literę w polu Klawisz skrótu. Można użyć kombinacji klawiszy CTRL+ litera (w przypadku małych liter) lub klawiszy CTRL+SHIFT+ litera (w przypadku wielkich liter), gdzie litera jest dowolną literą z klawiatury. Użyta litera klawisza skrótu nie może być liczbą ani znakiem specjalnym, takim jak @ lub #. Uwaga Po otwarciu skoroszytu zawierającego makro klawisz skrótu zastępuje odpowiedni domyślny klawisz skrótu programu Microsoft Excel. W polu Przechowuj makro w kliknij lokalizację, w której chcesz przechować makro. Chcąc, aby makro było dostępne przy każdym użyciu programu Excel, zaznacz pozycję Osobisty skoroszyt makr.
Tworzenie makr Jeżeli chcesz dołączyć opis makra, to wpisz go w polu Opis. Kliknij przycisk OK. Aby makro było uruchamiane względem położenia aktywnej komórki, zarejestruj je, używając względnych odwołań do komórki. Na pasku narzędzi Zatrzymywanie rejestracji kliknij przycisk Odwołanie względne , tak aby był zaznaczony. Program Excel będzie kontynuował rejestrowanie makr, używając względnych odwołań do momentu wyłączenia programu lub kliknięcia przycisku Odwołanie względne , tak aby przestał być zaznaczony. Wykonaj akcje, które chcesz zarejestrować. Na pasku narzędzi Zatrzymywanie rejestrowania kliknij przycisk Zatrzymaj rejestrowanie W celu uruchomienia makra nacisnij kombinację klawiszy lub skorzystaj z polecenia Narzędzia/makro/makra.
Okno: rejestruj makro
Pasek: Zatrzymaj rejestrowanie Odwołanie względne Zatrzymaj nagrywanie
Sposób zmiany koloru tła komórki
Uruchamianie makr Wykonanie makra wybranego z listy Edycja kodu utworzonego makra Lista dostępnych makr Wyświetlenie opcji wybranego makra
Tworzenie makr (VB) Otwieramy nowy arkusz excela, wybieramy z menu: narzędzia makra Edytor Visual Basic
Tworzenie makr (VB) otworzy nam się okno jak poniżej: Okno eksploratora Okno edycji
Tworzenie makr (VB) Lewe okno to okno eksploratora projektu. Upewnijmy się, że aktywny jest zeszyt w którym tworzymy funkcję (kliknijmy dwa razy na jego nazwę w eksploratorze, nazwa zeszytu pojawi się w nagłówku edytora), a następnie wstawmy moduł makr - menu: "insert/module". Moduł to taki arkusz w którym są przechowywane makra. Kliknijmy dwukrotnie na nasz moduł - szare okno z prawej - okno edycji - przybieże biały kolor. Wpiszmy tam następujący kod:
Pierwsza funkcja użytkownika Załóżmy, że potrzebujemy funkcji obliczającej obwód koła. Wiadomo wzór to "2*Pi*R". Wiemy też, że 2 oraz Pi są stałymi, zmienia się R. A więc do dzieła! Kod wpisujemy w oknie edycji Public Function obwodkola(R) Pi = 3.1415926535 polekola = 2 * Pi * R End Function
Pierwsza funkcja użytkownika Pierwsza linia kodu (a dokładniej wyrażenie "Public Function") to instrukcja inicjująca funkcję, "polekola" to nazwa funkcji, oczywiście ta nazwa może być dowolna. Litera w nawiasie to argument funkcji, może być ich więcej - wtedy należy oddzielać je przecinkami. Ostatnia linia kodu to deklaracja końca funkcji. Co się dzieje w środku? Druga linia przypisuje stałej "Pi" określoną wartość. I ponownie: to wcale nie musi być "Pi", może być np. "promień". Trzecia linia kodu oblicza wartość naszej funkcji zgodnie ze wzorem na obwód koła,
Pierwsza funkcja użytkownika Wróćmy teraz do excela (możemy zamknąć edytor Visual Basica). W komórce A1 wpiszmy dowolną liczbę, a w komórce A2: "=polekola(A1)", kliknijmy enter - jeżeli w komórce A2 pojawiła się liczba, to znaczy, że wszystkie kroki wykonaliśmy poprawnie. Jeżeli ktoś jest niedowiarkiem niech wynik sprawdzi na kalkulatorze. Twoja Pierwsza Funkcja gotowa.
Pierwsza funkcja użytkownika UWAGA Napisana przez nas funkcja jest dostępna w grupie funkcji użytkownika w oknie kreatora funkcji. Jeżeli chcemy zachować efekt naszej pracy zapiszmy nasz skoroszyt - funkcja będzie zawsze dostępna - ale, uwaga! - tylko w tym jednym skoroszycie, tzn. wtedy kiedy skoroszyt jest otwarty.
Pierwsza funkcja MsgBox Klasyczne ćwiczenie. Jeżeli już napisaliśmy naszą pierwszą funkcję to dojdźmy w tej chwili do momentu wstawiania kodu do modułu. Wpiszmy w module taki kod: Sub HelloWorld() MsgBox "Hello World!" End Sub Stańmy kursorem wewnątrz kodu i wciśnijmy klawisz F5. Excel wyświetli nam okno z tekstem "Hello World!". "Sub" (subprogram) to procedura wykonująca linię po linii polecenia języka Visual Basic.
W tym miejscu wpisujemy kod Uruchomienie kodu modułu
Pierwsza funkcja MsgBox Teraz dodamy do arkusza przycisk wywołujący nasz komunikat. Z paska "przybornik formantów" wybierzmy przycisk polecenia (CommandButton) i osadźmy go w dowolnym arkuszu excela (klikamy na przycisk polecenia na pasku, a następnie klikamy w dowolne miejsce arkusza).
Pierwsza funkcja MsgBox Klikamy teraz prawym klawiszem na na nasz przycisk i wybieramy "właściwości". Zmieniamy właściwość "caption" z "CommandButton1" na dowolny opis, np. "Hello World". Napis na przycisku zmieni się na właśnie "Hello World". Zamknijmy okno właściwości. Ponownie klikamy prawym klawiszem na przycisk i wybieramy "kod". Otworzy się nam okno edytora VBA z początkiem i końcem procedury: Private Sub CommandButton1_Click() End Sub
Przycisk akcji Przybornik formantów
Pierwsza funkcja MsgBox Pomiędzy te dwie linie wpiszmy "HelloWorld" (bez cudzysłowów oczywiście). Zauważmy, że "HelloWorld" to nazwa naszej procedury, którą przygotowaliśmy na początku ćwiczenia (słowo występujące po "Sub"): Private Sub CommandButton1_Click() HelloWorld End Sub Na pasku "przybornik formantów" wyłączmy jeszcze tryb projektowania (przycisk z ekierką, linijką i ołówkiem). Jeżeli teraz klikniemy utworzony przez na przycisk polecenia to zostanie wyświetlony nasz komunikat "Hello World!".
Suplement Migająca komórka Podgląd danych z innego arkusza Makro działające po wybraniu określonej komórki
Migająca komórka Zamieszczony tutaj kod zmienia w odstępach co jedną sekundę formatowanie komórki co można wykorzystać do uzyskania efektu migającej czcionki, albo zmieniającego się tła komórki: Poniższy przykład zmienia formatowanie jak na zdjęciach powyżej. Private zmiana As Boolean Sub UpdateClock() Dim zakres As Range Set zakres = Range("A1") If zmiana Then zakres.Interior.ColorIndex = xlNone zakres.Font.Color = vbBlack Else zakres.Interior.Color = vbBlack zakres.Font.Color = vbWhite End If zmiana = Not zmiana NextTick = Now + TimeValue("00:00:01") Application.OnTime NextTick, "UpdateClock" End Sub
Podgląd danych z innego arkusza Wprowadzając dane do pewnego arkusza musiałem mieć podgląd co znajduje się w komórce o takim samym adresie, ale w innym arkuszu (miał on nazwę 'Dane'). Ponieważ nie znam, żadnej wbudowanej funkcjonalności excela wykonującej to zadanie wykorzystałem okno komunikatu 'sprawdzania poprawności danych' oraz proste makro: Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim mysheet As Worksheet Dim tekst As String Set mysheet = Sheets("Dane") 'tutaj definiujemy z którego arkusza chcemy podglądać dane tekst= "Tekst komórki " & mysheet.Name & "!" & Target.Address & ": ''" 'tutaj definiujemy 'dodatkowy tekst jaki pojawi się w komunikacie tekst = tekst & mysheet.Range(Target.Address).Text & "''" With Selection.Validation .Delete .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop .InputMessage = tekst End With End Sub Kod makra wstawiamy oczywiście w tym arkuszu, w którym chcemy uzyskać efekt. W praktyce wygląda to tak:
Makro działające po wybraniu określonej komórki Jak przypisać makro do entera, a dokładnie chodzi mi o to, by makro działało tylko wtedy, gdy aktywowana będzie dowolna komórka w kolumnie B. Kod należy wpisać do odpowiedniego arkusza: Private Sub Worksheet_SelectionChange(ByVal Target As Range) nrkoloumny = 2 'numer kolumny - B=2 If Target.Column = nrkolumny Then MsgBox "Działa!" 'tutaj Twoje Makro End If End Sub
Dziękuje za uwagę Krzysztof Kornas