Instrukcja Select Case
Przykłady opisane w tej lekcji dostępne są w
arkuszu Excela: VBA.xlsm, tylko
ich samodzielne przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel
2013: ExcelSzkolenie.pl
Cwiczenia Excel 2013.zip
Ta lekcja może być
obejrzana lub przeczytana poniżej.
Film wygląda
najlepiej jeśli będzie odtwarzany w rozdzielczości 720p HD, rozdzielczość można
zmienić dopiero po uruchomieniu filmu klikając na ikonie trybika która pojawi się w prawym dolnym
rogu poniższego ekranu. Po kilku sekundach od zmiany obraz wyostrzy się.
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ą ‘Formularze’.
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 numeru 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 z 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. Przed
odkryciem należy zaznaczyć wiersze od 4 do 17.
Na koniec ustawiamy
aktywną komórkę w A1 i kończymy nagrywać makro.
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 wiersze ź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.