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.