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

Google
 

Rozkaz Select Case, Select Case...Case Is, Select Case...Case To

Select Case

Select Case jest instrukcją, która doskonale zastępuje zagnieżdżone instrukcje If...ElseIf, gdy konieczne jest wybieranie pomiędzy wieloma dostępnymi opcjami. Select Case sprawdza podane warunki i wybiera jeden odpowiedni blok kodu.

Składnia instrukcji Select Case:

Select Case Wyrażenie
 Case Wartość1
   Blok instrukcji VB wykonywany gdy Wyrażenie=Wartość1
 Case Wartość2
   Blok instrukcji VB wykonywany gdy Wyrażenie=Wartość2
 [Case Wartość3
   Blok instrukcji VB wykonywany gdy Wyrażenie=Wartość3
 ...
  [Case WartośćN
   Blok instrukcji VB wykonywany gdy Wyrażenie=WartośćN
  ]...]
 [Case Else
   Blok instrukcji VB wykonywany gdy Wyrażenie jest różne od wszystkich Wartości od 1 do N]
End Select


Nawiasy [] oznaczają, że wyrażenia te są opcjonalne i nie muszą występować. Wymagane są tylko Case Wartość1 i Case Wartość2
Wartościami instrukcji Select Case mogą być wartości numeryczne (liczby), łańcuchy znakowe, obliczenia, inne zmienne.
Instrukcja Select Case jest szczególnie przydatna, gdy trzeba zdecydować, którą z wielu możliwości wybrać. Wybór jest wykonywany na podstawie porównania Wyrażenia z kolejnymi podanymi Wartościami. Gdy którekolwiek porównanie będzie prawdziwe zostanie wykonany odpowiedni blok instrukcji, po czym program przejdzie do wykonywania następnej instrukcji za End Select. Jeżeli Wyrażenie nie jest równe żadnej z podanych Wartości zostanie wykonany blok instrukcji zawarty pomiędzy Case Else i End Select (jeżeli taki istnieje - jest to blok opcjonalny), po czym zostanie wykonany rozkaz następny za End Select. Instrukcja Select Case może wykonać jeden lub żaden z dostępnych bloków instrukcji. Są one wykonywane aż do napotkania kolejnej instrukcji Case lub End Select, pozostałe bloki są omijane. Dozowolone jest również używanie kilku Wartości w jednej instrukcji Case.

Przykład użycia instrukcji Select Case:

Select Case intZysk
 Case 1200, 1000
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić olbrzymi podatek")
 Case 700
   intPodatek=16
   intWiadomosc=MsgBox("Musisz zapłacić 16% podatku")
 Case intInnyZysk
   intPodatek=7
   intWiadomosc=MsgBox("Musisz zapłacić 7% podatku")
 Case (100+100)
   intPodatek=4
   intWiadomosc=MsgBox("Masz mało ale i tak płać!")
 Case Else
   intPodatek=0
   intWiadomosc=MsgBox("Twój zysk jest inny niż 1200, 1000, 700, 400 i 200.")
End Select


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

W instrukcji Select Case sprawdzana jest wartość zmiennej intZysk. Jej wartość jest porównywana z pierwszą wartością - 1200 i 1000. Jeżeli zmienna intZysk ma wartość 1200 lub 1000 to zmiennej intPodatek przypisywana jest wartość 20 i wyświetlane jest okno komunikatu, po czym instrukcja Select Case kończy swoje działanie. Jeżeli wartość zmiennej intZysk jest inna niż 1200 i 1000 to jest ona porównywana z kolejną podaną wartością - 700. Jeżeli zmienna intZysk ma wartość inną niż 1200,1000 i 700 to jest ona porównywana z wartością zmiennej intInnyZysk, a jeżeli jest inna to z wynikiem obliczenia (100+100). Jeżeli zmienna intZysk ma wartość inną niż wszystkie podane do sprawdzenia (1200, 1000, 700, intInnyZysk, 200) to wykonywany jest blok instrukcji pomiędzy Case Else i End Select.
Wadą tego rozwiązania jest to, że można porównywać podane wyrażenie tylko z konkretnymi wartościami. Rozwiązaniem tego problemu są instrukcje Select Case...Case Is i Select Case...Case To

na górę strony...

Select Case...Case Is

Select Case...Case Is (nazywana również Is Select Case) jest nieco rozszerzoną formą instrukcji Select Case. Instrukcja Select Case jako wartości do porównania z wyrażeniem może używać tylko wartości ściśle określonych. Instrukcja Case Is moźe natomiast używać tylko relacji. Ale szeroki zakres możliwości daje łączenie w jednej instrukcji Select zarówno Case, Case Is jak i Case To.

Składnia instrukcji Select Case...Case Is:

Select Case Wyrażenie
 Case Is Relacja1
   Blok instrukcji VB wykonywany gdy Relacja1 z Wyrażeniem daje wartość TRUE
 Case Is Relacja2
   Blok instrukcji VB wykonywany gdy Relacja2 z Wyrażeniem daje wartość TRUE
 [Case Is Relacja
   Blok instrukcji VB wykonywany gdy Relacja3 z Wyrażeniem daje wartość TRUE
 ...
  [Case Is RelacjaN
   Blok instrukcji VB wykonywany gdy Relacja4 z Wyrażeniem daje wartość TRUE
  ]...]
 [Case Else
   Blok instrukcji VB wykonywany gdy wszystkie podane Relacje z Wyrażeniem daje wartość FALSE]
End Select


Nawiasy [] oznaczają, że wyrażenia te są opcjonalne i nie muszą występować. Wymagane są tylko Case Is Relacja1 i Case Is Relacja2
Relacjami instrukcji Select Case...Case Is mogą być relacje z wartościami numerycznymi (liczbami), łańcuchami znakowymi, wynikami obliczeń, innymi zmiennymi.
Instrukcja Select Case...Case Is jest szczególnie przydatna, gdy trzeba zdecydować, którą z wielu możliwości wybrać. Wybór jest wykonywany na podstawie porównania Wyrażenia z kolejnymi podanymi Relacjami. Gdy którakolwiek relacja będzie prawdziwa zostanie wykonany odpowiedni blok instrukcji, po czym program przejdzie do wykonywania następnej instrukcji za End Select. Jeżeli Wyrażenie ze wszystkimi podanymi Relacjami da wartości FALSE zostanie wykonany blok instrukcji zawarty pomiędzy Case Else i End Select (jeżeli taki istnieje - jest to blok opcjonalny), po czym zostanie wykonany rozkaz następny za End Select. Instrukcja Select Case...Case Is może wykonać jeden lub żaden z dostępnych bloków instrukcji. Są one wykonywane aż do napotkania kolejnej instrukcji Case lub End Select, pozostałe bloki są omijane.Jeżeli Wyrażenie daje wartość TRUE z wieloma podanymi Relacjami wykonywany jest blok instrukcji za pierwszą napotkaną relacją dającą wynik TRUE, pozostałe są omijane.
Dozowolone jest również używanie kilku Relacji w jednej instrukcji Case Is

Przykład użycia instrukcji Select Case:

Select Case intZysk
 Case Is>1200
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić olbrzymi podatek")
 Case Is>700
   intPodatek=16
   intWiadomosc=MsgBox("Musisz zapłacić 16% podatku")
 Case Is>=intInnyZysk, Is>=400
   intPodatek=7
   intWiadomosc=MsgBox("Musisz zapłacić 7% podatku")
 Case Is <(100+100)
   intPodatek=4
   intWiadomosc=MsgBox("Z czego Ty żyjesz?!")
 Case Else
   intPodatek=0
   intWiadomosc=MsgBox("Masz mało ale i tak płać.")
End Select


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

W instrukcji Select Case...Case Is sprawdzana jest wartość zmiennej intZysk. Jej wartość jest porównywana z pierwszą relacją>1200. Jeżeli zmienna intZysk ma wartość większą niż 1200 to zmiennej intPodatek przypisywana jest wartość 20 i wyświetlane jest okno komunikatu, po czym instrukcja Select Case kończy swoje działanie. Jeżeli wartość zmiennej intZysk jest mniejsza bądź równa 1200 to jest ona porównywana z kolejną podaną relacją> 700. Jeżeli zmienna intZysk ma wartość mniejszą lub równą 700 to jest ona porównywana z wartością zmiennej intInnyZysk i 400, a jeżeli jest mniejsza od intInnyZysk i od 400 to jest sprawdzana relacja <(100+100). Jeżeli zmienna intzysk ma wartość inną niż wszystkie podane do sprawdzenia (jest mniejsza lub równa 700, jest mniejsza niż intinnyzysk i 400 i większa lub równa 200) to wykonywany jest blok instrukcji pomiędzy Case Else i End Select. Jeżeli zmienna intZysk ma wartość większą niż 1200, to spełnia ona na pewno pierwszą i drugą relację (jest również większa niż 700). Ponieważ jednak jako pierwsza zostanie sprawdzona relacja>1200 i zostanie wykonany odpowiedni blok instrukcji, więc druga relacja>700 nie zostanie już sprawdzona.
Wadą tej konstrukcji jest to, że można porównywać podane wyrażenie tylko z relacjami. Rozwiązaniem tego problemu są instrukcje Select Case i Select Case...Case To

na górę strony...

Select Case...Case To

Select Case...Case To (nazywana również To Select Case) jest nieco rozszerzoną formą instrukcji Select Case. Instrukcja Select Case jako wartości do porównania z wyrażeniem może używać tylko wartości ściśle określonych. Instrukcja Case To moźe natomiast używać tylko przedziałów. Ale szeroki zakres możliwości daje łączenie w jednej instrukcji Select zarówno Case, Case To jak i Case Is.

Składnia instrukcji Select Case...Case To:

Select Case Wyrażenie
 Case Wartość1a To Wartość1b
   Blok instrukcji VB wykonywany gdy Wyrażeniem należy do przedziału <Wartość1a, Wartość1b>
 Case Wartość2a To Wartość2b
   Blok instrukcji VB wykonywany gdy Wyrażeniem należy do przedziału <Wartość2a, Wartość2b>
 [Case Wartość3a To Wartość3b
   Blok instrukcji VB wykonywany gdy Wyrażeniem należy do przedziału <Wartość3a, Wartość3b>
 ...
  [Case WartośćNa To WartośćNb
   Blok instrukcji VB wykonywany gdy Wyrażeniem należy do przedziału <WartośćNa, WartośćNb>
  ]...]
 [Case Else
   Blok instrukcji VB wykonywany gdy Wyrażenie nie należy do żadnego podanego przedziału]
End Select


Nawiasy [] oznaczają, że wyrażenia te są opcjonalne i nie muszą występować. Wymagane są tylko Case Wartość1aToWartość1b i CaseWartość2a To Wartość2b
Wartościami instrukcji Select Case...Case To mogą być wartości numeryczne (liczby), łańcuchy znakowe, wyniki obliczeń, inne zmienne.
Instrukcja Select Case...Case To dokonuje wyboru na podstawie sprawdzenia czy Wyrażenia należy do któregoś z podanych przedziałów. Gdy instrukcja znajdzie taki przedział zostanie wykonany odpowiedni blok instrukcji, po czym program przejdzie do wykonywania następnej instrukcji za End Select. Jeżeli Wyrażenie nie należy do żadnego podanego przedziału zostanie wykonany blok instrukcji zawarty pomiędzy Case Else i End Select (jeżeli taki istnieje - jest to blok opcjonalny), po czym zostanie wykonany rozkaz następny za End Select. Instrukcja Select Case...Case To może wykonać jeden lub żaden z dostępnych bloków instrukcji. Są one wykonywane aż do napotkania kolejnej instrukcji Case lub End Select, pozostałe bloki są omijane.Jeżeli Wyrażenie należy do wielu podanych przedziałów wykonywany jest blok instrukcji za pierwszą napotkanym przdziałem do którego należy Wyrażenie, pozostałe bloki są omijane.
Dozowolone jest również używanie kilku przedziałów w jednej instrukcji Case To

Przykład użycia instrukcji Select Case..Case To:

Select Case intZysk
 Case 700 To 1200
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić olbrzymi podatek")
 Case intInnyZysk To 700
   intPodatek=16
   intWiadomosc=MsgBox("Musisz zapłacić 16% podatku")
 Case 0 To (100+100), 250 To 300
   intPodatek=0
   intWiadomosc=MsgBox("Z czego Ty żyjesz?!")
 Case Else
   intPodatek=4
   intWiadomosc=MsgBox("Masz mało ale i tak płać.")
End Select


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

W instrukcji Select Case...Case To sprawdzana jest wartość zmiennej intZysk. Instrukcja Select sprawdza czy należy ona do pierwszego podanego przedziału <700,1200>. Jeżeli zmienna intZysk ma wartość większą lub równą 700 i mniejszą lub równą 1200 to zmiennej intPodatek przypisywana jest wartość 20 i wyświetlane jest okno komunikatu, po czym instrukcja Select Case kończy swoje działanie. Jeżeli wartość zmiennej intZysk jest mniejsza od 700 bądź większa od 1200 to jest ona porównywana z kolejną podanym przedziałem. Jeżeli zmienna intZysk ma wartość mniejszą niż intInnyZysk lub więszą niż 700 (1200 z poprzedniego przedziału) to jest ona porównywana z kolejnym przedziałem <0,200> i <250,300>. Jeżeli zmienna intZysk nie należy do żadnego z podanych przedziałów to wykonywany jest blok instrukcji pomiędzy Case Else i End Select. Jeżeli zmienna inrZysk ma wartość 700, to należy ona do pierwszego i do drugiego przedziału. Ponieważ jednak jako pierwszy zostanie sprawdzony przedział <700,1200> i zostanie wykonany odpowiedni blok instrukcji, więc drugi przedział <intInnyZysk,700> nie zostanie już sprawdzony
Wadą tej konstrukcji jest to, że można porównywać podane wyrażenie tylko z przedziałami. Rozwiązaniem tego problemu są instrukcje Select Case i Select Case...Case Is

na górę strony...

Połączenie Case, Case Is, Case To

Wszystkie instrukcje Select pozwalają na łączenie i zagnieżdżanie różnych instrukcji Case wewnątrz jednej instrukcji Select. Pozwala to na tworzenie bardzo rozbudowanych instrukcji z wieloma różnymi sposobami sprawdzania wartości wyrażenia. Można sprawdzać zależności pomiędzy warażeniem a konkretną wartością liczbową, relacją lub przedziałem. W takiej konstrukcji może występować wiele instrukcji Case, Case Is i Case To i jedna Case Else
Dozwolone jest również łączenie różnych wersji Case w jednej linii i tworzenie rozbudowanych wyrażeń do porównania.

Przykład użycia instrukcji złożonej konstrukcji Select:

Select Case intZysk
 Case 700 To 1200
   intPodatek=20
   intWiadomosc=MsgBox("Musisz zapłacić olbrzymi podatek")
 Case intInnyZysk
   intPodatek=16
   intWiadomosc=MsgBox("To chyba nie tak wiele")
 Case <(100+100)
   intPodatek=0
   intWiadomosc=MsgBox("Z czego Ty żyjesz?!")
 Case Is>2000, 2500 To 3000, 5000
   intWiadomosc=MsgBox("Nieźle!")
 Case Else
   intPodatek=4
   intWiadomosc=MsgBox("Twój zysk jest między 200 a 700 ale nie" & intInnyZysk.)
End Select


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

Instrukcja Select sprawdza wartość zmiennej intZysk. Porównuje ją najpierw z przedziałem <700, 1200>. Jeżeli wartość zmiennej intZysk należy do tego przedziału, to zmiennej intPodatek przypisywana jest wartość 20 i wyświetlane okno komunikatu. Jeżeli nie należy do tego przedziału to porównywana jest z wartością zmiennej intInnyZysk. Jeżeli te wartości nie są równe to sprawdzana jest relacja wartości zmiennej intZysk z 200. Jeżeli wartość zmiennej intZysk nie spełnia żadnego z podanych warunków to jest sprawdzany szerego warunków (w jednej linii). Jeżeli ta wartość jest większa niż 2000, należy do przedziału <2500, 3000> lub ma wartość 5000 to jest wyświetlany komunikat. Jeżeli nie spełnia żadnego z podanych wymagań to wykonywany jest blok instrukcji między Case Else i End Select

na górę strony...

Select Case | Select Case...Case Is | Select Case...Case To
Połączenie Case, Case Is i Case To
If | If...Else | If...ElseIf

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

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