POWRÓT DO ARTYKUŁÓW

Visual Basic - pożyteczne makra


(Dane zaprezentowane w poniższym przykładzie są całkowicie fikcyjne. Zostały one przeze mnie wymyślone dla potrzeb niniejszego artykułu).


Makro 1 - parametryzowanie przedziałów.

Często potrzebujemy sparametryzować przedziały, np. cenowe, wiekowe, dotyczące populacji itp w celu dalszej, pogłębionej analizy. W przypadku maksymalnie 8 przedziałów możemy wykorzystać funkcję "Jeżeli" i tzw. zagnieżdżenia. Jednak z uwagi na to, ze wspomniana wyżej funkcja pozwala na mniej niż 8 zagnieżdżeń, problem pojawia się dla wymaganej większej liczy przedziałów. Problem ten można częściowo rozwiązać poprzez dzielenie funkcji "Jeżeli". Jednak bardziej efektywnym sposobem może być przygotowanie i zdefiniowanie makra bazującego na pętli: "Do Until" oraz wyrażeniu "If Then".

Załóżmy, że dysponujemy listą produktów, gdzie dla każdej z cen chcemy przypisać symbol według poniższej legendy:




Kod makra (bez zastosowania zmiennych) przedstawia się następująco:




Pętla "Do Until" wykonuje operacje tak długo, aż napotka pustą komórkę w kolumnie z ceną. Wówczas makro kończy pracę. W międzyczasie makro sprawdza, jaką wartość ma cena. Następnie przechodzi do sąsiedniej komórki na prawo i tam wpisuje symbol zgodnie z definicją, po czym wraca o jedną komórkę w lewo.

Oczywiście makro można byłoby przerobić w taki sposób, aby z poziomu Excela zmieniać przedziały cenowe. Wówczas zamiast sztywnych wartości cenowych w kodzie znalazłyby się zmienne do wskazanych komórek w pliku.

Chciałbyś zobaczyć, jak można wykorzystać zmienne do parametryzowania przedziałów? - zobacz przykład


Makro 2 (Dodawanie wielu arkuszy i ich nazywanie według zdefiniowanego klucza)


Przygotowując raporty często tworzymy arkusz wzorcowy, dotyczący np. produktu, sklepu, miasta, a potem kopiujemy go i przypisujemy kolejnemu parametrowi. W przypadku kilku arkuszy nie jest to zbyt uciążliwa praca. Problem może pojawić się, gdy potrzebujemy stworzyć model obejmujący kilkadziesiąt lub kilkaset arkuszy.

Wyobraźmy sobie, że w arkuszu definicyjnym o nazwie "ref" mamy listę miejscowości, dla których chcemy stworzyć osobne arkusze. Każdej z tych miejscowości przypisany jest kolejny numer. Tworzymy arkusz: "model", który jest wzorcem. Tak powinien wyglądać arkusz dla każdej miejscowości. W arkuszu "model" rezerwujemy pole, w którym będzie zmieniany numer z kolumny A arkusza "ref". Na tej podstawie będzie identyfikowana miejscowość. Dzięki temu numerowi lub bezpośrednio nazwie miejscowości można za pomocą funkcji wyszukiwania dodać pozostałe parametry ilościowe lub jakościowe, charakteryzujące daną miejscowość. Zmiana numeru wymusi zatem zmianę danych.




Aby stworzyć jednym kliknięciem wszystkie wymagane arkusze wg wzorca, nazwać je numerami przypisanymi poszczególnym miejscowościom i zapewnić dane odpowiadające tym miejscowościom można wykorzystać poniższe makro, które bazuje na pętli: "For Next".




Makro to dodaje kolejny arkusz, zmienia nazwę arkusza, kopiuje do niego zawartość arkusza "model" oraz zmienia numer rozpoznawczy w arkuszu przez co następuje aktualizacja danych.