PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora

Google
 

Rozkaz If, If Else, If ElseIf

If

If jest najprostszą instrukcją wyboru. Dokonuje ona sprawdzenia podanego warunku i jeżeli jest on prawdziwy (ma wartość TRUE) wykonywany jest podany blok rozkazów. W przypadku gdy warunek jest fałszywy blok ten jest omijany.

Składnia instrukcji If:

If Warunek Then
   Blok instrukcji VB wykonywany gdy Warunek jest prawdziwy
End If


Uproszczona składnia instrukcji If:

If Warunek Then Instrukcja1 VB [: Instrukcja2 VB [: ... [: InstrukcjaN VB]...]]

Uproszczoną wersję instrukcji If można użyć, gdy ma być wykonany tylko jeden rozkaz (lub kilka krótkich rozkazów oddzielonych od siebie dwukropkami), a nie cały blok rozkazów. Nawiasy [] oznaczają, że wyrażenia te są opcjonalne, tzn., że wymagany jest tylko jeden rokaz za Then, a pozostałe mogą lecz nie muszą występować.
Jeżeli sprawdzany warunek jest prawdziwy wykonywany jest blok instrukcji pomiędzy Then i End If a dla wersji uproszczonej od Then do końca instrukcji (niekoniecznie linii). Następnie program przechodzi do wykonywania kolejnych rozkazów znajdujących się za End If (lub końcem instrukcji w wersji uproszczonej). Gdy sprawdzany warunek daje wynik FALSE program przechodzi bezpośrednio do instrukcji znajdujących się za End If (lub końcem instrukcji w wersji uproszczonej). Wtedy blok instrukcji pomiędzy Then i End If nie jest wykonywany.

Przykład użycia instrukcji If:

If (intZysk>1200) Then
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić większy podatek")
End If

Zapis w postaci uproszczonej:

If (intZysk>1200) Then intPodatek=20 : intWiadomosc=MsgBox("Musisz zapłacić większy podatek")

(Zmienne, typy zmiennych, operatory porównania i funkcja MsgBox() zostały opisane w innych częściach kursu.)

Instrukcja If sprawdza czy zmienna typu Integer intZysk ma wartość większą niż 1200. Jeżeli tak to warunek (intZysk>1200) daje wynik TRUE i wykonywane są instrukcje pomiędzy Then i End If. (Zmiennej intPodatek nadawana jest wartość 20 i wyświetlane jest okno komunikatu). Jeżeli zmienna intZysk ma wartość mniejszą lub równą 1200 warunek da wartość FALSE i zostanie wykonana instrukcja następna po End If.

Zapisywanie warunków w nawiasach nie jest konieczne, jednak poprawia czytelność zapisu, szczególnie, jeżeli sprawdzany warunek jest rozbudowany. Zapis uproszczony jest przydatany przy konieczności wykonania małej liczby krótkich rozkazów, jednak dla zachowania przejrzystości programu polecamy stosowanie pełnej wersji zapisu.

na górę strony...

If...Else

Instrukcja If wykonuje część programu tylko w przypadku, gdy sprawdzanny warunek ma wartość TRUE. Nie wykonuje go jednak w przypadku, gdy ma on wartość FALSE. Rozbudowaną wersją instrukcji If jest If ...Else. W przypadku gdy sprawdzany warunek ma wartość TRUE wykonuje ona blok rozkazów zawarty między Then i Else, gdy zaś warunek ma wartość FALSE wykonuje blok rozkazów zawarty między Else i End If. Może ona więc "reagować" zarówno jeżeli warunek jest spełniony jak i gdy nie jest spełniony.
Instrukcja If...Else nazywana jest wyrażeniem wzajemnie wykluczającym się, ponieważ może zostać wykonany tylko jeden z zawartych w nim bloków rozkazów.

Składnia instrukcji If...Else:

If Warunek Then
   Blok instrukcji VB wykonywany gdy Warunek jest prawdziwy
Else
   Blok instrukcji VB wykonywany gdy Warunek nie jest prawdziwy
End If


Uproszczona składnia instrukcji If..Else:

If Warunek Then Instrukcja1a VB [: Instrukcja2a VB [: ... [: InstrukcjaNa VB]...]] Else Instrukcja1b VB [: Instrukcja2b VB [: ... [: InstrukcjaMb VB]...]]

Uproszczonę wersję instrukcji If...Else można użyć, gdy ma być wykonany tylko jeden rozkaz (lub kilka krótkich rozkazów, oddzielonych od siebie dwukropkami), a nie cały blok rozkazów. Nawiasy [] oznaczają, że wyrażenia te są opcjonalne, tzn., że wymagany jest tylko jeden rokaz pomiędzy Then i Else i jeden za Else, a pozostałe mogą lecz nie muszą występować. Po sprawdzeniu warunku i wykonaniu odpowiedniego bloku rozkazów instrukcja If...Else przechodzi do następnego rozkazu za End If.

Przykład użycia instrukcji If...Else:

If (intZysk>1200) Then
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić większy podatek")
Else
   intPodatek=7
   intWiadomosc=MsgBox("Możesz zapłacić mniejszy podatek"")
End If

Zapis w formie uproszczonej:

If (intZysk>1200) Then intPodatek=20 : intWiadomosc=MsgBox("Musisz zapłacić większy podatek") Else intPodatek=7 : intWiadomosc=MsgBox("Możesz zapłacić mniejszy podatek")

(Zmienne, typy zmiennych, operatory porównania i funkcja MsgBox() zostały opisane w innych częściach kursu.)

Instrukcja If sprawdza czy zmienna typu Integer intZysk ma wartość większą niż 1200. Jeżeli tak to warunek (intZysk>1200) daje wynik TRUE i wykonywane są instrukcje pomiędzy Then i Else (zmiennej intPodatek przypisywana jest wartość 20 i wyświetlane jest okno komunikatu). Jeżeli zmienna intZysk ma wartość mniejszą lub równą 1200 warunek da wartość FALSE i zostanie wykonany blok instrukcja zawarty między Else i End If (zmiennej intPodatek przypisywana jest wartość 7 i wyświetlane jest okno komunikatu).

Zapisywanie warunków w nawiasach nie jest konieczne, jednak poprawia czytelność zapisu, szczególnie, jeżeli sprawdzany warunek jest rozbudowany. Zapis uproszczony jest przydatany przy konieczności wykonania małej liczby krótkich rozkazów, jednak dla zachowania przejrzystości programu polecamy stosowanie pełnej wersji zapisu.

na górę strony...

If...ElseIf

Możliwość zagnieżdżania instrukcji If..Else (umieszczania jednej instrukcji If wewnątrz bloku rozkazów innej instrukcji If) wymusiło powstanie konstrukcji If...ElseIf. Jest to rozbudowana wersja instrukcji If ...Else. Pozwala ona na kolejne sprawdzanie wielu warunków.

Składnia instrukcji If...ElseIf:

If Warunek1 Then
   Blok instrukcji VB wykonywany gdy Warunek1 jest prawdziwy
ElseIf Warunek2 Then
   Blok instrukcji VB wykonywany gdy Warunek1 nie jest prawdziwy a Warunek2 jest prawdziwy
 [ElseIf Warunek3 Then
    Blok instrukcji VB wykonywany gdy Warunek1 i Warunek2 nie są prawdziwe a Warunek3 jest prawdziwy
   ...
  [ElseIf WarunekN Then
    Blok instrukcji VB wykonywany gdy Warunki od 1 do (N-1) nie są prawdziwe a WarunekN jest prawdziwy
   ]...]
 [Else
    Blok instrukcji VB wykonywany gdy żaden z Warunków od 1 do N nie jest prawdziwy
 ]
End If


Nawiasy [] oznaczają, że wyrażenia te są opcjonalne i nie muszą występować.
Instrukcja If...ElseIf sprawdza pierwszy warunek. Gdy jest prawdziwy wykonywany jest odpowiedni dla niego blok rozkazów, po czym program przechodzi do następnego rozkazu za End If. Gdy pierwszy warunek nie jest prawdziwy sprawdzany jest drugi i jeżeli jest prawdziwy to wykonywany jest dla niego opdowiedni blok rozkazów. Gdy nie jest prawdziwy sprawdzane są kolejno następne warunki. Gdy któryś z nich jest prawdziwy wykonywany jest odpowiedni dla niego blok rozkazów, po czym działanie instrukcji If..ElseIf jest przerywane i wykonywany jest rozkaz następny za End If. Jeżeli żaden z warunków nie jest prawdziwy wykonywany jest blok rozkazów pomiędzy Else i End If (jeżeli taki istnieje - jest to blok opcjonalny) lub następny rozkaz za End If (jeżeli nie ma bloku Else). Jeżeli jeden z warunków jest spełniony to wykonywany jest odpowiedni dla niego blok instrukcji, po czym działanie instrukcji If...EndIf jest przerywane. Oznacza to, że gdy w instrukcji będzie kilka warunków prawdziwych to uwzględniony będzie ten, który zostanie najwcześniej sprawdzony (będzie wyżej w instrukcji) i zostanie wykonany odpowiedni dla niego blok instrukcji, a pozostałe warunki nie będą już sprawdzane i inne bloki instrukcji nie zostaną wykonane.
Ponieważ instrukcja If...ElseIf może mieć dosyć złożoną kostrukcję można stosować prostszą (w niektórych przypadkach) instrukcję Select Case. Instrukcja Select Case potrafi sprawdzać wartość tylko jednej zmiennej, ale można ją zagnieżdżać lub łączyć z If aby sprawdzać wszystkie żadane warunki.

Przykład użycia instrukcji If...ElseIf:

If (intZysk>1200) Then
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić olbrzymi podatek")
ElseIf (intZysk>700) Then
   intPodatek=16
   intWiadomosc=MsgBox("Musisz zapłacić 16% podatku")
 ElseIf (intZysk>400) Then
    intPodatek=7
    intWiadomosc=MsgBox("Musisz zapłacić 7% podatku")
  ElseIf (intZysk>200) Then
     intPodatek=4
     intWiadomosc=MsgBox("Masz mało ale i tak płać!")
   ElseIf (blnPracuje=False) Then
      intWiadomosc=MsgBox("Chyba jesteś na czyimś utrzymaniu...")
Else
   intPodatek=0
   intWiadomosc=MsgBox("Z czego Ty żyjesz?")
End If


(Zmienne, typy zmiennych, operatory porównania i funkcja MsgBox() zostały opisane w innych częściach kursu.)

W pierwszym warunku sprawdzana jest wartość zmiennej intZysk. Jeżeli jest ona większa od 1200 to zmiennej intPodatek przypisywana jest wartość 7 i wyświetlane okno z komunikatem. Jeżeli jest mniejsza lub równa 1200 to sprawdzany jest kolejny warunek (intZysk>700). Jeżeli wartość intZysk jest większa od 700, czyli znajduje się w przedziale (700,1200>, to zmiennej intPodatek przypisywana jest wartość 16 i wyświetlane jest okno z komunikatem. Jeżeli jest mniejsza lub równa 700 sprawdzany jest kolejny warunek. Jeżeli po sprawdzeniu kolejnych warunków okaże się że wartość zmiennej intZysk jest mniejsza lub równa 200, sprawdzana jest wartość zmiennej blnPracuje. Jeżeli jej wartością jest False (zmienne typu Boolean mogą przyjmować wartości False lub True, jeżeli więc zmienna blnPracuje ma wartość False to podany warunek blnPracuje=False jest prawdziwy i przyjmuje wartość TRUE, wartość zmiennej blnPracuje zostaje nie zmieniona i dalej jest False) to wyświetlany jest komunikat i instrukcja kończy działanie. Gdy jednak żaden z warunków instrukcji nie został spełniony (intZysk jest mniejsze lub równe 200 i blnPracuje ma wartoś True) to wykonywany jest blok rozkazów za Else. Zmiennej intPodatek przypisywana jest wartość 0 i wyświetlane jest okno komunikatu.
Jeżeli zmienna intZysk ma wartość większą niż 700 i mniejszą lub równą 1200 (drugi warunek jest prawdziwy) to zostanie wykonany drugi blok rozkazów i instrukcja zakończy działanie, chociaż inne warunki również są prawdziwe (jeżeli wartość intZysk jest większa niż 700 to jest również większa niż 400 -warunek3 i większa niż 200 - warunek4). Instrukcja If...ElseIf wykonuje jednak tylko jeden blok instrukcji odpowiedni dla pierwszego prawdziwego warunku (w tym przypadku jest to warunek 2 - intZysk>700) pozostałe są omijane. Instrukcja If..ElseIf może sprawdzać warunki dla różnych zmiennych (warunek5 dla zmiennej blnPracuje, pozostałe dla zmiennej intZysk) podczas gdy prostsza w konstrukcji instrukcja Select Case potrafi sprawdzać wartość tylko jednej zmiennej. Można jednak uzyskać odpowiednią konstrukcję przez połączenie instrukcji Select Case i If...ElseIf.

na górę strony...

TypeOf

Jako Warunek rozkazu If można użyć wyrażenia typu:

TypeOf NazwaObiektu Is TypObiektu.

NazwaObiektu jest dowolną referencją obiektu, TypObiektu jest dowolnym poprawnym typem obiektu. Wyrażenie to zwraca wartość True jeżeli NazwaObiektu jest typu określonego przez TypObiektu, w przeciwnym razie zostanie zwrócone False.

Przykład użycia wyrażenia TypeOf:

Dim varKomunikat
If TypeOf MojaKontrolka Is CommandButton Then
  varKomunikat=MsgBox("CommandButton")
ElseIf TypeOf MojaKontrolka Is CheckBox Then
  varKomunikat=MsgBox("CheckBox")
ElseIf TypeOf MojaKontrolka Is TextBox Then
  varKomunikat=MsgBox("TextBox")
End If

(Zmienne, typy zmiennych i funkcja MsgBox() zostały opisane w innych częściach kursu.)

na górę strony...

If | If...Else | If...ElseIf
Select Case | Select Case...Case Is | Select Case...Case To

Google
 
Poprzednia | Wyżej | Strona główna | Spis treści | Index haseł | Opis VB

BokDol
PoprzedniaWyżejGłównaSpis treściIndex hasełZnajdźBokGora
BokGora