Instrukcja
Select Case
Przykłady opisane w tej lekcji dostępne są w arkuszu Excela:
VBA.xls, tylko ich samodzielne
przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel 2003: ExcelSzkolenie.pl
Cwiczenia Excel 2003.zip
Formatowanie jest jednym z
najbardziej monotonnych i powtarzalnych zadań jakie stoi przed użytkownikami
Excela, dlatego najlepiej właśnie przerzucić tą pracę na makra.
Przykład 1
(Arkusz ‘Select Case’)
Przed zapoznaniem się z tym
przykładem należy zapoznać się z lekcją Profesjonalne raporty podstawy.
W różnego rodzaju raportach, dobrym rozwiązaniem
jest zaoferowanie użytkownikom możliwości wyboru danych, które ich interesują i
ukrycie wszystkich pozostałych.
W poniższym przykładzie chcielibyśmy
udostępnić 3 filtry dla użytkowników: wybór kraju, wybór waluty i okresu na
który dane mają być prezentowane.
Pierwszym krokiem będzie dwukrotne
skopiowanie przygotowanego wcześniej pola kombi i umieszczenie ich nad tym już
istniejącym.
Dla pierwszego z pól kombi zmieniamy
‘Zakres wejściowy’ i ‘Łącze komórki’ tak aby wskazywały odpowiednio oznaczenia
walut i komórkę obok pola.
Dla drugiego z pól kombi zmieniamy
‘Zakres wejściowy’ i ‘Łącze komórki’ tak aby wskazywały odpowiednio oznaczenia
kwartałów i komórkę obok pola.
W przypadku walut możemy jeszcze
obyć się bez pisania makra. Wystarczy w pole z danymi wprowadzić formułę:
=WYSZUKAJ.PIONOWO(B5;$B$20:$H$32;$D$4+1+JEŻELI($D$2=1;3;0);0)
Najważniejszym jej elementem jest
funkcja ‘Jeżeli’, która jeśli wybrano waluty lokalne (w komórce D2 będzie wtedy
1), dodaje 3 do numery kolumny z której mają być ciągnięte dane.
Czyli jeżeli wybrane są dolary i
Rosja, dane będą czerpane z 3 kolumny tabeli z danymi ponieważ ;$D$4=2, a
funkcja Jeżeli przyjmie dla USD wartość 0. 2+1+0
Jeżeli zmienimy ustawienie pola
kombi na zł/rur/hr (waluty lokalne) funkcja jeżeli przyjmie wartość 3 i dane
będą czerpane kolumny będącej o 3 kolumny dalej.
Pozostało nam umożliwienie
dokonywania wyboru kwartału.
Zaczniemy od nagrania makra, które
ukryje kilka wierszy (np. 5:16), a potem je odkryje.
Same wiersze zostaną później
zmienione, makro nagrywane jest tylko po to aby nie musieć znajdować kodu który
pozwoli ukryć/odkryć wiersze.
Nagrane makro wygląda tak jak
poniżej.
Kasujemy wszystkie opisy.
Wprowadzamy zmienną ‘kwartal’,
której przypisujemy wartość jaka znajduje się w komórce ‘D3’.
Pozostawiamy komendę ukrywającą
wiersze 5:16.
Wprowadzamy konstrukcję ‘Select
Case’, która pozwoli nam na wykonanie jednego z wielu poleceń.
Konstrukcja Select Case ma
następującą składnie:
Select Case argument ‘argumentem jest zmienna od której zależy
która z komend zostanie wykonana
Case Is = X: komenda ‘X to jedna z wartości jaką może
przyjąć argument, po nim następuje dwukropek I komenda jaka ma być wykonana w
tym przypadku
Case Is = Y: komenda ‘Y to
inna z wartości, ilość przypadków nie jest ograniczona
…
Case Else ‘opcjonalnie można przyjąć komendę dla
wszystkich innych wartości argumentu
End Select ‘zawsze znajduje się na końcu tej
konstrukcji
Zasada działania tego makra jest
następująca: Najpierw ukrywamy wszystkie kwartały, później dzięki konstrukcji
‘Select Case’ wybieramy wiersze, które mają być odkryte, po czym już poza
‘Select Case’ odkrywamy wybrane wiersze i na koniec wybieramy komórkę A1,
ponieważ wybrane całe wiersz źle by wyglądały.
Makro powinno się uruchamiać przy
każdej zmianie wyboru pola kombi z kwartałami, w tym celu klikamy prawym
klawiszem myszy na polu kombi i wybieramy opcję ‘Przypisz makro…’
Znajdujemy na liście makr
‘Ukrywanie’ i klikamy przycisk ‘OK.’.
Pozostało już tylko ukrycie
technicznych części arkuszy, chowamy tabelę z danymi i zakresy wejściowe i
komórki z łączami pól kombi.
Wyłączamy linie siatki, wybieramy
komórkę A1.
Sprawdzamy jak działa nasze makro
zmieniając wybrane kwartały.
W tym przykładzie zaprezentowałem
bardzo prosty przypadek – tak aby łatwo było wytłumaczyć samą metodę, tak
naprawdę nie widać użyteczności tego rozwiązania w tym przypadku, jest ona
widoczna dopiero przy dłuższych i bardziej zaawansowanych raportach.
Szkolenie Excel 2003 Szkolenie Excel 2007