Funkcja VBA Switch() wyszukuje pierwsze wyrażenie z listy argumentów, które jest Prawdą i zwraca przypisaną do niego wartość.

Teoretycznie – funkcja ta jest odpowiednikiem w VBA funkcji Excela Przełącz(), ale nie jest to dokładnie taka sama funkcja. Nie ma tu wartości domyślnej, a jeżeli żaden z warunków nie jest spełniony, funkcja w VBA zwraca Null – czyli wartość (a właściwie brak wartości) zupełnie nieznaną w Excelu, ale często występującą w bazach danych (w Accessie również).
No i jest jeszcze jedna, wręcz kluczowa różnica odróżniająca obie te funkcje: w funkcji Przełącz() jest jedna zmienna, która może przyjmować różne wartości i zwracać przypisane do niej wartości. W funkcji Switch – w każdym kroku może to być inny warunek.
Argumenty funkcji to pary:
-
- Arg1 (i kolejne nieparzyste)– warunek do sprawdzenia zwracajacy
- Arg2 (i kolejne parzyste) -wartość lub kryterium, która musi być spełnione, aby komórka była liczona.
itd.
Przykład wykorzystania może wyglądać tak:
W kodzie VBA funkcja wygląda tak:
| Public Function FunkcjaSwitchVBA(A, B, C) Dim Wynik Wynik = Switch(a < 0, „ujemna”, B > a, „rośnie”, C > 5, „powyzej 5”) If IsNull(Wynik) Then FunkcjaSwitchVBA = „Brak wyniku” Else FunkcjaSwitchVBA = Wynik End If End Function |
Warunek If IsNull(Wynik) Then … dołożyłam tu dlatego, żeby jednoznacznie otrzymać wiarygodny wynik. Bez tego warunku, w przypadku, gdyby wszystkie warunki miałyby wartość False – w komórce Excela widoczne było zero. A zero to też wartość.

