czwartek, 12 sierpnia 2010

Jak zarejestrować makro w Excelu?

Znamy już podstawy VBA. W tym wpisie wykorzystamy posiadaną wiedzę i nauczymy się, jak zarejestrować makro w Excelu.

Zacznijmy od określenia, co powinniśmy rejestrować i do czego ma nam się przydać makro? Makro jest użytecznym sposobem na zautomatyzowanie użytkowania pracy z programem Excel. W związku z tym warto rejestrować wszystko, co robimy regularnie lub coś skomplikowanego, co może nam się jeszcze przydać. Jako przykład takiego zadania, które "nadaje się" do zarejestrowania makra jest raport sprzedaży, skomplikowany wykres lub diagram Gantta.

Jako przykład rejestrowania makra weźmy tworzenie wykresu z danych, które posiadamy w tabeli. Przykładowa tabela zawiera kwartalne wyniki sprzedaży.


Zobaczmy teraz, jak na podstawie tej tabeli zarejestrować makro.


Tworzenie makra zaczynamy od naciśnięcia przycisku Zarejestruj makro, który znajduje się na wstążce. Ścieżka do przycisku to: karta Deweloper -> część Kod -> przycisk Zarejestruj makro. Po naciśnięciu tego przycisku pojawi się okno dialogowe Rejestrowanie makra.

Wypełniamy wszystkie pola na oknie dialogowym zgodnie z obrazkiem poniżej:

  • w polu Nazwa makra wpisujemy jego nazwę bez spacji;
  • jeśli chcemy, to wybieramy skrót klawiaturowy, który każdorazowo uruchomi nasze makro;
  • to makro nie będzie mi już później potrzebne, więc w trzecim polu wybrałem Ten skoroszyt;
  • w ostatnim polu wpisujemy opis makra.


Od tego momentu wszystko to, co zrobimy, zostanie nagrane jak na taśmie magnetofonowej.

Po zakończeniu wykonywania wszystkich operacji klikamy na przycisk Zatrzymaj rejestrowanie, który znajduje się dokładnie w tym samym miejscu, co przycisk Zarejestruj makro.

Nasze makro możemy za każdym razem odtworzyć po użyciu skrótu klawiaturowego, który wybraliśmy. Kod makra w języku VBA możemy odnaleźć po przycisku Visual Basic w karcie Deweloper.

Nasz przykładowy kod jest następujący:


Sub PierwszeMakro()
'
' PierwszeMakro Makro
' Nasze pierwsze makro w Excelu
'
' Klawisz skrótu: Ctrl+Shift+A
'
    Range("A2:D7").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("Arkusz1!$A$2:$D$7")
    ActiveChart.ChartType = xlColumnStacked
    ActiveChart.SetElement (msoElementChartTitleAboveChart)


End Sub


Tym sposobem nawet początkujący użytkownik programu Excel będzie w stanie rejestrować makra.

To już wszystko. Jak zawsze zapraszam do lektury kolejnych wpisów bloga Abc Excel i oczywiście do jego subskrypcji.

Ps. Kto wie, jaki wykres stworzyłem? Na poprawne odpowiedzi czekam w komentarzach pod wpisem.

10 komentarze:

marcin pisze...

ChartType = xlColumnStacked
strzelam,że chodzi o wykres kolumnowy :-)

Ynwestor pisze...

Strzał w 10! A wiesz może, który konkretnie jest to rodzaj wykresu kolumnowego?

marcin pisze...

no więc tak po kolei :-)
ChartType = xlColumnStacked z tego skapłem się że chodzi o wykres kolumnowy
ale żeby odpowiedzieć na Twoją zagwozdkę :-)
zrobiłem tak:
utworzyłem dokładnie taką samą tabelkę
zarejestrowałem makro po czym kod-makra-edytuj
i wkleiłem podany przez Ciebie kod,następnie uruchomiłem zapisane makro i o dziwo zadziałało he he ;-) (z początku nie dodałem na końcu end sub i nie chciało śmigać) ładnie utworzyło wykres dla podanych danych i odpowiadam,że jest to wykres kolumnowy skumulowany :-)

marcin pisze...

czyli takie makro mozna wykorzystac np. gdy co miesiąc tworzymy powtarzalne wykresy sprzedazy,wtedy rejestrujemy makro
i w nastepnych przyszłych plikach...(ale czy takie makro może być wykorzystane w innych plikach czy tylko w jednym skoroszycie,tym w którym je zapisalismy,gdyz po otworzeniu nowego pliku nie mogłem tego zpaisanego makra znaleźć)
...tworzę w dokładnie tych samych komórkach tabelkę z taką samą ilością wierszy i kolumn i uruchamiamy makro,
a gdyby do naszej tabelki z danymi dodac
np. jeszcze dwa miesiące lub jednego nowego sprzedawcę,wtedy mozna jakoś szybko zaznaczyc nowy zkres dla makra
np. Range("A2:D7").Select
i tu wpisac nowy zakres dla tabeli?
pozdrawiam

marcin pisze...

sprawdziłem,dodałem nowy miesiąc kwiecień i zmieniłem
- Range("A2:D7").Select - z D7 na E7
- ActiveChart.SetSourceData Source:=Range("Arkusz1!$A$2:$D$7") - i tu z $D$7 na $E$7 i po uruchomieniu makra dodało nowy miesiąc

marcin pisze...

to znowu ja :-)
sprawdziłem jeszcze raz dokładnie i poprawka,
w otworzonym nowym skoroszycie było do wyboru to zapisane makro...
to już naprawdę ostatni komentarz
z mej strony :-)
pozdrawiam

Ynwestor pisze...

Wow! Prawidłowa odpowiedź! Widzę, że bardzo dobrze wyciągasz wnioski. Prowadzenie bloga dla takich czytelników jak Ty to przyjemność.

Anonimowy pisze...

mało kto ma niezwykle cenną zdolność do przekazywania Swej wiedzy, Ty ją na pewno posiadasz, rewelacyjne artykuły. Napisane jakby ktoś mówił face to face.

Ynwestor pisze...

Dziękuję za komplement :)

Anonimowy pisze...

Dzięki za ten wpis, zawsze mi się wydawało, że makro to coś poza moim zasięgiem, ale chyba nie jest tak źle :P

Prześlij komentarz

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.