Instrukcja Select…Case_

Instrukcja  VBA Select…Case_ to wyrażenie będące faktycznie odpowiednikiem funkcji Excela Przełącz().  Dla danej zmiennej wyszukuje pierwszą wartość będącą prawdą Prawdą i wykonuje przypisany do niego ciąg kodu. 

W kodzie VBA instrukcja wygląda tak:

Public Sub WyrazenieSelectCase()
Dim DzienTyg As Integer
DzienTyg = Weekday(Date, vbMonday)
Select Case  DzienTyg
Case Is < 6
MsgBox „Dziś jest sobota!”
'(…)
Case  7
MsgBox „Miłej niedzieli”
'(…)
Case Else
MsgBox „Dzień roboczy”
End Select
End Sub

Stosując tę instrukcję trzeba pamiętać, że kolejność sprawdzania kolejnych warunków ma znaczenia. 
Np. w takiej funkcji:

Public Function JakaLiczba(Ile)
Select Case Ile
Case Is < 100
JakaLiczba = „Mniej niż 100”
Case Is < 0
JakaLiczba = „Ujemna”
Case Is > 100
JakaLiczba = „Więcej niż 100”
End Select
End Function

Jeżeli argumentem wejściowym Ile będzie wartość ujemna – i tak otrzymany wynik będzie JakaLiczba=”Mniej niż 100″, gdyż już pierwszy warunek będzie spełniony i kolejne nie będą sprawdzane. 
Jeżeli natomiast Ile=100 – otrzymamy w wyniku wartość pustą, gdyż każdy z warunków zwraca wartość False. Chcąc uniknąć takiej sytuacji – konieczne jest zastosowanie jako ostatniego warunku Case Else – czyli w innych przypadkach. 



A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Funkcja VBA Switch()

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

kliknij, aby powiększyć

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ść. 



A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Funkcja Przełącz()

Funkcja Przełącz() to jedna z funkcji logicznych Excela. Wyszukuje pierwszy spełniony warunek i zwraca przypisaną do niego wartość. 

Argumenty funkcji to:

Wyrażenie – wyrażenie, wartość którego jest sprawdzana;

Wartość1 – możliwa wartość Wyrażenia;  

Wynik1  – wynik zwracany przez funkcję,
jeżeli Wyrażenie ma Wartość1;

Domyślnie_lub_Wartość2 – może być to wartość dla kolejne pary wyrażenie-wynik, albo wartość domyślna, jeżeli żaden z ostatnich warunków nie został spełniony.

Funkcja działa w ten sposób, że sprawdzane są kolejne Wartości o przy znalezieniu pierwszego warunku sprawdzonego – zwraca przypisany do niej Wynik. Jeżeli wcześniejszy warunek nie jest spełniony, funkcja zwraca wartość przypisaną do argumentu Domyślnie. Brak spełnienia kolejnych warunków oraz brak wartości domyślnej generuje błąd #N/D.

Funkcja w Excelu występuje od wersji 2019. Odpowiednikiem w VBA jest funkcja SWITCH(). 
W VBA we wszystkich wersjach, również tych wcześniejszych jest też instrukcja Select … Case_, działająca bardzo podobnie. 


Kurs Excel 2019 od podstaw

 

Instrukcja VBA: If…Then…

Instrukcja If…Then… w VBA to jedna z funkcji logicznych VBA.
Jest odpowiednikiem funkcji Excela Jeżeli.

If Warunek Then
   warunek jest spełniony
Else
   'warunek nie jest spełniony
End If

W przykładzie powyżej – Warunek musi dawać jednoznaczną odpowiedź typu True (Prawda) lub False (Fałsz) i w zależności od tego wykonuje odpowiednią część kodu.
Instrukcja prosta (choć oczywiście kod przypisany do spełnionego lub nie warunku może być bardzo rozbudowany) i z pewnością bardzo pożyteczna i często wykorzystywana w różnych procedurach.


Kurs Makra i VBA w Excelu dla początkujących

 

Funkcja Jeżeli

Funkcja Jeżeli() to jedna z funkcji logicznych Excela. Odzwierciedla wartość instrukcji Jeżeli … to … w przeciwnym przypadku …

Argumenty funkcji to:

    • Test_logiczny – dowolny warunek, który daje odpowiedź Prawda lub Fałsz. A
    • Wartość_jeżeli_prawda – wynik działania funkcji, jeżeli  warunek jest spełniony
    • Wartość_jeżeli_fałsz – wynik działania funkcji, jeżeli  warunek nie jest spełniony

Jest to jedna z najczęściej używanych funkcji Excela. Warto pamiętać, że test logiczny musi być precyzyjnie określony, gdyż mogą pojawić się niespodzianki.

Odpowiednikiem funkcji w VBA jest funkcja instrukcja If…Then…Else


Kurs Excel na rozmowie rekrutacyjnej