1 Makropolecenie formatowania i wstÄ™p do Visual Basic for Applications (VBA) Ćwiczenie1. 1) Wprowadzmy poniższe dane do arkusza nowego kalkulacyjnego (i nadajmy mu swojÄ… nazwÄ™). Aby skorzystać z powyższych danych upewnijmy siÄ™, że sumy w miesiÄ™czne i kwartalne sÄ… obliczone przy zastosowaniu funkcji SUMA. 2) Procedura formatowania: - wybierz (kliknij) jakÄ…Å› dowolnÄ… komórkÄ™ - z menu Edycja wybierz Przejdz Do - w oknie dialogowym Przejdz Do kliknij przycisk Specjalne - kliknij opcjÄ™ StaÅ‚e nastÄ™pnie skasuj zaznaczenie opcji Liczby, Logiczne i BÅ‚Ä™dy (pozostaw zaznaczony Tekst) - kliknij OK - zauważ, że sÄ… zaznaczone komórki zawierajÄ…ce tekst (postaraj siÄ™ nie anulować zaznaczenia, gdyż bÄ™dziemy je formatować) - formatuj zaznaczone komórki za pomocÄ… menu Format > Komórki kliknij zakÅ‚adkÄ™ Czcionka - wybierz czcionkÄ™ pogrubionÄ… i zmieÅ„ kolor na granatowy - kliknij OK. - wybierz (kliknij) jakÄ…Å› dowolnÄ… komórkÄ™ - z menu Edycja wybierz Przejdz Do - w oknie dialogowym Przejdz Do kliknij przycisk Specjalne - kliknij opcjÄ™ StaÅ‚e nastÄ™pnie skasuj zaznaczenie opcji Tekst, Logiczne i BÅ‚Ä™dy (pozostaw zaznaczone Liczby) - kliknij OK - zauważ, że sÄ… zaznaczone komórki zawierajÄ…ce liczby (postaraj siÄ™ nie anulować zaznaczenia, gdyż bÄ™dziemy je formatować) - formatuj zaznaczone komórki za pomocÄ… menu Format > Komórki kliknij zakÅ‚adkÄ™ Czcionka - wybierz czcionkÄ™ pogrubionÄ… i zmieÅ„ kolor na zielony - kliknij OK. - wybierz (kliknij) jakÄ…Å› dowolnÄ… komórkÄ™ - z menu Edycja wybierz Przejdz Do - w oknie dialogowym Przejdz Do kliknij przycisk Specjalne - kliknij opcjÄ™ FormuÅ‚y - kliknij OK 2 - zauważ, że sÄ… zaznaczone komórki zawierajÄ…ce liczby bÄ™dÄ…ce wynikiem wykonania funkcji (postaraj siÄ™ nie anulować zaznaczenia, gdyż bÄ™dziemy je formatować) - formatuj zaznaczone komórki za pomocÄ… menu Format > Komórki kliknij zakÅ‚adkÄ™ Czcionka - wybierz czcionkÄ™ pogrubionÄ… i zmieÅ„ kolor na czerwony - kliknij OK. Teraz dodajmy jeszcze opis. - zaznacz zakres A1:A3 i wybierz Wstaw > Wiersze - kliknij w komórce A1 - wybierz menu Format > Komórki, zakÅ‚adka Desenie i wybierz granatowy kolor jako Cieniowanie komórki - kliknij OK. - kliknij w komórce B1 i wpisz: Tekst - kliknij w komórce A2 - wybierz menu Format > Komórki, zakÅ‚adka Desenie i wybierz zielony kolor jako Cieniowanie komórki - kliknij OK. - kliknij w komórce B2 i wpisz: Liczby - kliknij w komórce A3 - wybierz menu Format > Komórki, zakÅ‚adka Desenie i wybierz czerwony kolor jako Cieniowanie komórki - kliknij OK. - kliknij w komórce B3 i wpisz: FormuÅ‚y - wciÅ›nij Enter Efekt naszej pracy powinien wyglÄ…dać tak jak na poniższym rysunku: Ćwiczenie 2 MajÄ…c już dokÅ‚adnie zaplanowane czynnoÅ›ci, które chcemy wykorzystać, możemy przystÄ…pić do zarejestrowania makra. W tym celu usuÅ„my formatowanie z naszego arkusza. Aby tego dokonać użyjmy kombinacji klawiszy CTRL+A (by zaznaczyć caÅ‚y arkusz) a potem menu Edycja > Wyczyść > Format. Zaznaczamy jeszcze zakres A1:A3 i wybieramy Edycja > UsuÅ„ (w oknie dialogowym UsuÅ„ zaznaczamy CaÅ‚y wiersz) i klikamy OK. Procedura zarejestrowania nowego makra: 1) Wybierz pojedynczÄ… komórkÄ™ arkusza 2) Z menu NarzÄ™dzia > Makro wybierz Zarejestruj nowe makro 3 3) Pojawia siÄ™ okno dialogowe Rejestruj makro 4) Nadaj swojÄ… nazwÄ™ (np. FormatowanieZawartoÅ›ci ) 5) Możesz też dodać swój opis w polu Opis (np. różnicuje tekst, liczby i formuÅ‚y ) 6) Kliknij OK. 7) Teraz kolejno powtórz czynnoÅ›ci z poprzedniego ćwiczenia i po ich wykonaniu kliknij Zatrzymaj rejestrowanie na pasku narzÄ™dzi lub menu NarzÄ™dzia > Makro > Zatrzymaj rejestrowanie 8) Po zarejestrowaniu makropolecenia trzeba je przynajmniej raz odtworzyć, by sprawdzić czy dziaÅ‚a ono poprawnie 9) W celu obejrzenia wyników dziaÅ‚ania naszego makra usuÅ„my formatowanie z naszego arkusza. Aby tego dokonać: - naciÅ›nij kombinacjÄ™ klawiszy CTRL + A (by zaznaczyć caÅ‚y arkusz) - potem z menu Edycja wybierz Wyczyść > Formaty - zaznacz zakres A1:A3 i wybierz Edycja > UsuÅ„, a w oknie dialogowym UsuÅ„ zaznacz opcjÄ™ CaÅ‚y wiersz i kliknij OK. Ćwiczenie 3 Samodzielnie zarejestruj makro usuwajÄ…ce formatowanie z arkusza. Ćwiczenie 4 Czasami po pierwszym odtworzeniu makra dostrzegamy potrzebÄ™ poprawek. W excelu możemy dokonać poprawek bez koniecznoÅ›ci ponownego nagrywania. Aby rozpocząć modyfikacje należy znalezć miejsce w którym umieÅ›ciÅ‚ je rejestrator makr (my wybraliÅ›my domyÅ›lnÄ… opcjÄ™ Ten skoroszyt); najproÅ›ciej bÄ™dzie otworzyć okno dialogowe Makro: 1) Z menu NarzÄ™dzia wybierz Makro > Makra 2) Wybierz z listy nazwÄ™ swojego makra ( FormatowanieZawartoÅ›ci jeÅ›li tak je nazwaÅ‚eÅ›) 3) WciÅ›nij przycisk Edycja 4) OtworzyÅ‚o siÄ™ (jeÅ›li nic nie namieszaÅ‚eÅ›& ) okno Visual Basic Editor, a okno Excela jest nadal otwarte w tle. MiÄ™dzy tymi oknami możemy siÄ™ poruszać za pomocÄ… skrótu ALT+F11 (lub standardowo ALT+TAB). W razie gdybyÅ›my chcieli zamknąć ekran edytora Visual Basic (ale na razie tego nie robimy!), wybieramy ostatnie polecenie z menu Plik: Zamknij i powróć do Microsoft Excel. Okno edytora Visual Basic sÅ‚uży do modyfikacji makr oraz do pisania procedur w jÄ™zyku Visual Basic for Applications (VBA). W trakcie pracy z nagranymi makrami (i w rezultacie pisania wÅ‚asnych procedur) zapoznamy siÄ™ dokÅ‚adnie ze wszystkimi elementami tego ekranu. Opcje menu oraz paski narzÄ™dzi w oknie edytora Visual Basic (VB) różniÄ… siÄ™ one od menu i pasków narzÄ™dzi, które sÄ… dostÄ™pne w oknie Microsoft Excel. W oknie edytora VB pasek menu i pasek narzÄ™dzi majÄ… polecenia i przyciski pomocne w trakcie programowania i testowania procedur. Ekran edytora VB to gÅ‚ownie trzy okna Projekt, WÅ‚aÅ›ciwoÅ›ci oraz Kod programu. W oknie Projekt w otwartym folderze ModuÅ‚y zaznaczony jest ModuÅ‚ 1. MS Excel wpisuje zarejestrowane czynnoÅ›ci w specjalnych arkuszach o nazwie ModuÅ‚ l, ModuÅ‚ 2 itp. W przyszÅ‚oÅ›ci bÄ™dziemy używać modułów do wpisywania kodu swoich procedur. ModuÅ‚ przypomina swoim wyglÄ…dem pusty dokument w edytorze tekstów MS Word. 5) W oknie Kod programu wyÅ›wietla nam siÄ™ kod makra FormatowanieZawartoÅ›ci . Zwróć uwagÄ™ na linie poprzedzone znakiem apostrofu to sÄ… linie komentarza. Linie te sÄ… pomijane w trakcie wykonywania procedury (a dokÅ‚adniej wszystko co znajduje siÄ™ po znaku apostrofu aż do koÅ„ca linii). Komentarze dodaje siÄ™ by uÅ‚atwić czytanie kodu procedury. 6) Dodajmy teraz kilka komentarzy: a) Przejdz do okna edytora Visual Basic. b) Kliknij przed liniÄ… kodu: Selection.SpecialCells(xlCellTypeConstants, 2).Select i naciÅ›nij Enter. c) PrzesuÅ„ kursor do wolnej linii, wstawionej powyżej i dodaj komentarz przedstawiony poniżej, pamiÄ™tajÄ…c o poprzedzeniu go znakiem apostrofu: Znajd" i sformatuj komórki zawieraj" ce tekst d) Kliknij przed instrukcjÄ…: Selection.SpecialCells(xlCellTypeConstants, 1).Select 4 i naciÅ›nij Enter. e) PrzesuÅ„ kursor do pustej linii powyżej i dodaj nastÄ™pujÄ…cy komentarz: Znajd" i sformatuj komórki zawieraj" ce liczby f) Kliknij przed instrukcjÄ…: Selection.SpecialCells(xlCellTypeFormulas, 23).Select i naciÅ›nij Enter. g) PrzesuÅ„ kursor do pustej linii i dodaj nastÄ™pujÄ…cy komentarz: Znajd" i sformatuj komórki zawieraj" ce formuÅ‚y h) Kliknij przed instrukcjÄ… Range("A1:A3").Select i naciÅ›nij Enter. i) PrzesuÅ„ kursor do pustej linii powyżej i dodaj nastÄ™pujÄ…cy komentarz: 'Sporz" d" legend" Kilka słów o komentarzach: Na ekranie VBE (edytor Visual Basic) w oknie kodu każda linia rozpoczynajÄ…ca siÄ™ znakiem apostrofu jest komentarzem. Komentarze wyÅ›wietlane sÄ… w kolorze zielonym. Kolor komentarzy możemy zmienić w oknie dialogowym Opcje. W tym celu wybieramy NarzÄ™dzia > Opcje, po czym klikamy kartÄ™ Edytor Format. Komentarz można również dodać po prawej stronie wpisanego kodu. Na przykÅ‚ad, aby dodać komentarz na koÅ„cu linii kodu .ColorIndex = 11, klikamy na koÅ„cu tego wiersza, naciskamy klawisz tabulacji TAB, wpisujemy apostrof, a nastÄ™pnie tekst komentarza. Omawiana linia kodu powinna wyglÄ…dać tak: ColorIndex = 11 ' ustawia kolor czcionki na ciemnoniebieski Linie komentarza nie wykonujÄ… innego zadania poza informowaniem użytkownika o tym jakie zadanie speÅ‚nia dana procedura lub pewna jej część. W czasie pisania wÅ‚asnych procedur pamiÄ™tajmy o umieszczeniu w nich szczegółowych komentarzy zarówno dla siebie, jak i dla innych, którzy bÄ™dÄ… wprowadzić w przyszÅ‚oÅ›ci zmiany do napisanej przez nas procedury. Ćwiczenie 5 Czytanie kodu makra Kilka słów o makroprocedurach: Makroprocedury zaczynajÄ… siÄ™ od sÅ‚owa kluczowego Sub i koÅ„czÄ… siÄ™ sÅ‚owami kluczowymi End Sub. Po sÅ‚owie kluczowym Sub znajduje siÄ™ nazwa makra i para nawiasów. PomiÄ™dzy sÅ‚owami kluczowymi Sub i End Sub mieszczÄ… siÄ™ instrukcje procedury, które Visual Basic wykonuje za każdym razem, gdy przystÄ…pimy do odtwarzania makra. Visual Basic czyta wiersze procedury od góry do doÅ‚u, pomijajÄ…c instrukcje poprzedzone apostrofem (patrz Informacje odnoÅ›nie komentarzy w zagadnieniu omówionym powyżej) i zatrzymuje siÄ™ po dotarciu do słów kluczowych End Sub. Zwróćmy uwagÄ™ na dużą liczbÄ™ kropek w zarejestrowanym kodzie makra. WystÄ™pujÄ… one dosÅ‚ownie w każdej linii kodu. Kropki te wiążą poszczególne elementy jÄ™zyka Visual Basic. Instrukcje procedury czytamy zaczynajÄ…c od prawej strony po ostatniej kropce. PrzeÅ›ledzmy teraz caÅ‚Ä… procedurÄ™ FormatowanieZawartoÅ›ci (ze wzglÄ™du na możliwÄ… różnÄ… kolejność wykonywanych czynnoÅ›ci u różnych studentów zajmiemy siÄ™ poszczególnymi instrukcjami w dowolnej kolejnoÅ›ci). Range("A1:A3").Select Wybierz komórki A1, A2, A3. Selection.EntireRow.Insert Wstaw nowy wierz w wybranym obszarze. Ponieważ poprzednia linia kodu wybraÅ‚a komórki w trzech wierszach, Visual Basic wstawi trzy puste wiersze. ActiveCell.FormulaRlC1 = "Tekst" Niech wpisem w aktywnej komórce bÄ™dzie sÅ‚owo "Tekst". Ponieważ poprzednia linia kodu, Range("Bl").Select, zaznaczyÅ‚a komórkÄ™ B1, komórka ta jest w tej chwili aktywnÄ… komórkÄ… i w niej wÅ‚aÅ›nie Visual Basic wpisze podany tekst. With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Ten specjalny blok kodu należy zinterpretować nastÄ™pujÄ…co: niech kolor wnÄ™trza obecnie wybranych komórek bÄ™dzie czerwony (ColorIndex = 3), deseÅ„ niech bÄ™dzie peÅ‚ny (xlSolid), a kolor desenia wybranych komórek bÄ™dzie automatyczny (xlAutomatic). 5 Blok kodu rozpoczynajÄ…cy siÄ™ od sÅ‚owa kluczowego With i koÅ„czÄ…cy siÄ™ sÅ‚owami kluczowymi End With przyÅ›piesza wykonanie kodu procedury. Zamiast powtarzać za każdym razem podobne instrukcje: Selection.Interior.ColorIndex = 3 Selection.Interior.Pattern = xlSolid Selection.Interior.PatternColorIndex = xlAUtomatic Rejestrator makr skorzystaÅ‚ ze skróconego zapisu umieszczajÄ…c powtarzajÄ…cy siÄ™ tekst instrukcji Selection.Interior po prawej stronie sÅ‚owa kluczowego With i zakoÅ„czyÅ‚ blok instrukcji odnoszÄ…cy siÄ™ do tego samego zakresu komórek sÅ‚owami kluczowymi End With. Ćwiczenie 6 Poprawianie kodu makra W trakcie przeglÄ…dania i analizowania kodu makra linia po linii z pewnoÅ›ciÄ… zauważymy, że rejestrator makr zarejestrowaÅ‚ również zbÄ™dne polecenia, których nie zamierzaliÅ›my wcale umieÅ›cić w makrze. Na przykÅ‚ad, po wybraniu komórek zawierajÄ…cych tekst, oprócz ustawienia stylu czcionki pogrubionej i fioletowego koloru, Excel również nagraÅ‚ bieżące ustawienia innych opcji na Czcionka - nazwÄ™ czcionki, j jej rozmiar, efekty przekreÅ›lenia, indeksu dolnego/górnego, cienie i styl podkreÅ›lenia. With Selection.Font .Name = "Arial CE" .FontStyle = "Pogrubiony" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 11 End With Automatyczny rejestrator procedur zawsze zapisuje wszystkie ustawienia, bez wzglÄ™du na to, czy zależy nam na nich, czy nie. Wszystkie dodatkowe instrukcje niepotrzebnie wydÅ‚użajÄ… procedurÄ™. Dlatego też, po zakoÅ„czeniu rejestracji makra możemy przeanalizować nagrane instrukcje i zrezygnować ze zbÄ™dnych. 1) Z podanego bloku kodu usuÅ„ przekreÅ›lone instrukcje With Selection.Font .Name = "Arial CE" .FOntStyle = "Pogrubiony" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFOnt = False .Shadow = False .Underline = xlUnderlineStyleNOne .COlorIndex = 11 End With 2) Znajdz w kodzie makroprocedury blok instrukcji formatujÄ…cy komórki zawierajÄ…ce liczby i dokonaj zmian w kodzie procedury wedÅ‚ug wzoru poniżej: 'Znajd" i sformatuj komórki zawieraj" ce liczby Selection.SpecialCells(xlCellTypeConstants, 1).Select With Selection.Font .ColorIndex = 10 ' ustawia kolor czcionki na zielony End With Range("C6").Select 3) Znajdz kod makra, który formatuje komórki zawierajÄ…ce wzory i zmodyfikuj go wedÅ‚ug wzoru poniżej: 'Znajd" i sformatuj komórki zawieraj" ce formuÅ‚y Selection.SpecialCells(xlCellTypeFormulas, 23).Select With Selection.Font .FontStyle = "Pogrubiony" .ColorIndex = 3 6 End With 4) Znajdz nastÄ™pujÄ…ce dwie linie kodu; Range("A1:A3").Select Selection.EntireRow.Insert 5) ZamieÅ„ powyższe dwie linie kodu na jednÄ…, wedÅ‚ug wzoru poniżej: Range("A1:A3").EntireRow.Insert Zwróć uwagÄ™, że rejestrator makr korzysta z adresowania w stylu R1C1 przy rejestrowaniu wzoru w aktywnej komórce: ActiveCell.FormulaR1C1 = "Text" Actic·eCell.FormulaR1C1 = "Numbers ActiveCell.FormulaR1C1 = "Formulas A po zaznaczeniu aktywnej komórki rejestrator makr raz używa instrukcji ActiveCell, innym zaÅ› razem posÅ‚uguje siÄ™ instrukcjÄ… Selection. Obie te instrukcje noszÄ… nazwÄ™ wÅ‚aÅ›ciwoÅ›ci. JeÅ›li jest wybrana tylko jedna komórka, można stosować na przemian ActiveCell lub Selection. 6) Testowanie zmodyfikowanej procedury W czasie modyfikacji zarejestrowanego makra jest możliwe, że dostanÄ… siÄ™ do kodu makra bÅ‚Ä™dy. Na przykÅ‚ad, możemy usunąć niezbÄ™dnÄ… liniÄ™ kodu (albo koniecznÄ… kropkÄ™). Aby upewnić siÄ™, że makro nadal dziaÅ‚a poprawnie po zakoÅ„czeniu modyfikacji, musimy je ponownie odtworzyć. a) W oknie kodu VBE kliknij myszÄ… w dowolnej linii kodu makroprocedury FormatowanieZawartoÅ›ci i wybierz Run > Run Sub /UserForm. Jeżeli nie zostaÅ‚y wprowadzone dodatkowe bÅ‚Ä™dy w czasie modyfikacji makra, powinno ono nadal dziaÅ‚ać poprawnie i bez problemów. Aby zobaczyć rezultat dziaÅ‚ania makra, uruchom okno Microsoft Excel klikajÄ…c jego przycisk na pasku zadaÅ„ lub naciskajÄ…c klawisze Alt+F11. b) Jeżeli Visual Basic napotka bÅ‚Ä…d w czasie odtwarzania makra, pojawi siÄ™ komentarz o typie bÅ‚Ä™du w oknie informacji. Przed odtworzeniem makra należy upewnić siÄ™, że makro to można uruchomić z bieżącego arkusza. Na przykÅ‚ad, jeÅ›li spróbujemy wywoÅ‚ać makro FormatowanieZawartoÅ›ci z pustego arkusza, uzyskamy okno z bÅ‚Ä™dem Run time error 1004 - No cells were found (BÅ‚Ä…d wykonania `1004 ·- nie znaleziono komórek). Musimy kliknąć przycisk End i wybrać wÅ‚aÅ›ciwy arkusz przed próbÄ… ponownego uruchomienia tego makra. c) Jeżeli wybrany arkusz zawiera tylko komórki, w których wpisano tekst, to przy próbie odtworzenia makra FormatowanieZawartoÅ›ci Visual Basic napotka bÅ‚Ä…d przy odtwarzaniu instrukcji polecajÄ…cych mu wybranie komórek zawierajÄ…cych liczby. W tym przypadku zostanie wyÅ›wietlony ten sam komunikat bÅ‚Ä™du No cells were found . d) Jeżeli pominiemy kropkÄ™ w instrukcji With Selection.Font, to przy próbie odtworzenia tej instrukcji kodu Visual Basic wyÅ›wietli komunikat bÅ‚Ä™du Run time error 424 - Object required" (BÅ‚ad wykonania 424 - wymagany jest obiekt). Musimy kliknąć przycisk Debug w polu komunikatu. Zostaniemy przeniesieni na ekran kodu w edytorze VB. W tym momencie nastÄ…pi przerwa w odtwarzaniu procedury (tzw. stan przerwania, ang. Break mode) VB zaznaczy na żółto liniÄ™ kodu, której nic potrafiÅ‚ wykonać z powodu bÅ‚Ä™du. Po naniesieniu poprawki i próbie kontynuowania procedury, VB może oznajmić w specjalnym komunikacie: This action will reset your project, proceed anyway?"(Czynność ta zresetuje projekt. Czy chcesz mimo wszystko kontynuować?). Klikamy OK. Mimo, że możemy dokonać modyfikacji kodu w stanie przerwania, niektóre poprawki wniesione do kodu makra nie dopuszczajÄ… na kontynuacjÄ™ procedury. Po poprawieniu musimy odtworzyć ponownie makro, gdyż mogÄ… być w nim jeszcze inne bÅ‚Ä™dy, które trzeba poprawić zanim makro bÄ™dzie mogÅ‚o poprawnie dziaÅ‚ać. 7) Sposoby uruchamiania makropoleceÅ„ Procedury w Excelu można uruchomić z poziomu programu MS Excel lub z poziomu edytora VB. Kiedy odtwarzamy procedurÄ™ z poziomu edytora VB, Visual Basic wykonuje poszczególne czynnoÅ›ci procedury za kulisami swojego ekranu. Możemy usÅ‚yszeć , ale nie widzimy jak VB wykonuje krok po kroku polecenia. By obejrzeć wykonywane przez Visual Basic czynnoÅ›ci, musimy odtwarzać procedurÄ™ z poziomu programu MS Excel przy użyciu polecenia Makra z menu NarzÄ™dzia lub tak ustawiajÄ…c ekran, aby można byÅ‚o oglÄ…dać okno MS Excel oraz okno edytora VB w tym samym czasie. Jest to wygodny sposób, wiÄ™c ustawmy oba okna obok siebie: a) Kliknij prawym przyciskiem myszy na wolnym polu w pasku zadaÅ„ Windows 7 b) Z menu podrÄ™cznego wybierz Okna sÄ…siadujÄ…co w pionie Ćwiczenie 7 Dalsze ulepszanie makropolecenia Czasami po zakoÅ„czeniu rejestrowaniu makra wpadamy na pomysÅ‚, że makro to mogÅ‚oby dodatkowo wykonać jednoczeÅ›nie jeszcze inne zadania. Dodanie nowych instrukcji do makroprocedury nie jest zbyt trudne, gdy zna siÄ™ już skÅ‚adniÄ™ Visual Basica. Jednakże zwykle to zrobić jeszcze szybciej, polecajÄ…c wykonanie dodatkowych zadaÅ„ rejestratorowi makr. To prawda, że rejestrator makr wpisuje czÄ™sto znacznie wiÄ™cej instrukcji niż potrzeba. Jedno jednak jest pewne: nie robi bÅ‚Ä™dów i w peÅ‚ni można na nim polegać! Jeżeli pragniemy dodać dodatkowe polecenia do utworzonego makra korzystajÄ…c z rejestratora makr, musimy zarejestrować nowe makro, nastÄ™pnie zaÅ› skopiować odpowiednie fragmenty kodu i wkleić je do oryginalnego makra. Spróbujmy teraz wprowadzić grubÄ… ramkÄ™ wokół zakresu A1:B3. 1. Uaktywnij okno Microsoft Excel 2. Wybierz NarzÄ™dzia > Makro > Zarejestruj nowe makro. 3. W oknie dialogowym Makro kliknij OK, aby zaakceptować sugerowanÄ… nazwÄ™ makra (prawdopodobnie typu: Makro2 ) i rozpocząć jego rejestrowanie. 4. Zaznacz komórki A1:B3. 5. Wybierz Format > Komórki i kliknij zakÅ‚adkÄ™ Obramowanie. 6. W obszarze ustawieÅ„ kliknij przycisk Kontur. 7. Kliknij najgrubszÄ… liniÄ™ w polu Styl. 8. Kliknij OK, aby zamknąć okno dialogowe. 9. Kliknij w komórce A1. Zwróć uwagÄ™, że wokół komórek A1:B3 znajduje siÄ™ teraz gruba ramka. 10. Kliknij przycisk Stop Recording (Zatrzymaj rejestrowanie) na pasku narzÄ™dzi Stop Recording lub wybierz NarzÄ™dzia > Makro > Zatrzymaj rejestrowanie. Aby uzyskać wglÄ…d do kodu zarejestrowanego makra, musimy przejść do ekranu :edytora Visual Basic. Okno kodu wyÅ›wietla makro pokazane poniżej Sub Makro2() ' Makro2 Makro ' Makro zarejestrowane 2002-03-16, autor andrzej ' Range("A1:B3").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("G16").Select End Sub TworzÄ…c makra za pomocÄ… rejestratora makr a potem analizujÄ…c ich kod możemy szybko dowiedzieć siÄ™, jak instrukcje jÄ™zyka Visual Basic odpowiadajÄ… poszczególnym opcjom menu Excela oraz ustawieniom w oknach dialogowych. NastÄ™pnie możemy odszukać znaczenie i użycie tych poleceÅ„ Visual Basica we 8 wbudowanym systemie pomocy. Rzecz jasna, im wiÄ™cej instrukcji Visual Basic trzeba przeczytać, tym wolniejsze bÄ™dzie odtwarzanie naszej procedury. Wyeliminowanie zbytecznych poleceÅ„ przyÅ›pieszy wykonanie makra. Jednakże aby kod makra byÅ‚ Å‚atwiejszy do zrozumienia, musimy czÄ™sto sami ruszyć gÅ‚owÄ… i poszukać lepszego sposobu wykonania danego zadania. Na przykÅ‚ad, spójrzmy na powyższÄ… procedurÄ™. Widzimy, że rejestrator makr potraktowaÅ‚ każdÄ… krawÄ™dz ramki oddzielnie. Aatwo siÄ™ domyÅ›lić, że VB oferuje pojedyncze polecenie, które wprowadzi ramkÄ™ wokół zaznaczonego zakresu. Poznanie wÅ‚aÅ›ciwych instrukcji lub wyrażeÅ„ w każdym jÄ™zyku wymaga czasu, jednak gdy trochÄ™ poszperamy to dowiemy siÄ™, że VB zawiera metodÄ™ BorderAround, umożliwiajÄ…cÄ… dodanie obramowania do zaznaczonych komórek i ustawienie koloru, stylu oraz gruboÅ›ci linii ramki. KorzystajÄ…c z VB najszybszym sposobem tworzenia grubej .ramki wokół zaznaczonych komórek jest zastosowanie nastÄ™pujÄ…cego polecenia: Range("A1:A3").BorderAround Weight:=xlThick Powyższa instrukcja posÅ‚uguje siÄ™ metodÄ… BorderAround w odniesieniu do obiektu Range. Poleca ona użycie grubej linii przy tworzeniu obramowania zakresu komórek A1:B3. Dodajmy teraz powyższÄ… instrukcjÄ™ do makroprocedury FormatowanieZawartoÅ›ci : 1. Uruchom okno Kod programu z procedurÄ… FormatowanieZawartoÅ›ci . 2. Dodaj nowÄ… liniÄ™ po linii kodu: ActiveCell.FormulaR1C1 = "FormuÅ‚y" 3. Wprowadz w nastÄ™pnym wierszu liniÄ™: Range("A1:A3").BorderAround Weight:=xlThick 4. Umieść kursor w dowolnej linii wewnÄ…trz makra I uruchom zmodyfikowanÄ… wersjÄ™ (np. poleceniem F5) Ćwiczenie 8 Dodanie wÅ‚asnej instrukcji kodu VB do istniejÄ…cego makra UmieÅ›cimy teraz polecenie, aby VB ogÅ‚osiÅ‚ nam , że zakoÅ„czyÅ‚ wykonywanie kodu makra. Takiego polecenia nie da siÄ™ zarejestrować przy użyciu rejestratora, bo Excel nie ma takiego zadania w swoich menu. 1) W oknie Kod programu kliknij przed sÅ‚owami kluczowymi End Sub i naciÅ›nij Enter 2) Cofnij kursor do pustej linii i wpisz poniższÄ… liniÄ™: MsgBox Wykonywanie procedury zostaÅ‚o zako" czone. 3) Umieść kursor w dowolnej linii wewnÄ…trz makra I uruchom zmodyfikowanÄ… wersjÄ™ (np. poleceniem F5) Ćwiczenie 9 Zmiana nazwy makropolecenia Aby zmienić nazwÄ™ zmodyfikowanej wersji kodu makra wystarczy w oknie Kod programu znalezć starÄ… nazwÄ™ znajdujÄ…cÄ… siÄ™ po sÅ‚owie kluczowym Sub i zastÄ…pić jÄ… nowÄ… nazwÄ….