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.