Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-teorie-zaklady » select-case-excel-vba

Select Case - Excel VBA

Jak vykonat jednu skupinu z několika podle hodnoty výrazu.

Úvodem

Potřebujeme-li vykonat určitou posloupnost příkazu na základě hodnoty příslušného výrazu. Například hodnota příspěvku dle věku dítěte. Velikost slvy podle hodnoty objednávky.

Poznámka: K řešení lze použít příkazy If, Then, ElseIf, Else, čimž docílíte stejného efektu, ale někdy je výhodnější pro přelednost použít Select Case. Co kdy záleží na každém programátorovi.

Trocha teorie

Syntaxe

Select Case testovaný_výraz [Case seznam_výrazů-n [příkazy-n]] [Case Else [elsepříkazy]] End Select

Popis

  • testovaný_výraz - Povinné. Libovolný číselný výraz nebo řetězcový výraz.
  • seznam_výrazů-nPovinné, vyskytne-li se Case. Oddělený seznam položek v následujícím formátu:
    • výraz
    • výraz To výraz - Klíčové slovo To určuje rozsah hodnot. Menší hodnota musí být uvedena před To.
    • Is výraz s operátory_porovnání - Klíčové slovo Is s operátory porovnání (kromě Is a Like) lze použít pro určení rozsahu hodnot.
    • kombinace výše uvedených - odděleno čárkou
  • příkazy-n - Volitelné. Jeden nebo více příkazů vykonaných, jestliže testovaný_výraz odpovídá libovolné části ze seznamu_příkazů-n.
  • elsepříkazy - Volitelné. Jeden nebo více příkazů vykonaných, jestliže testovaný_výraz neodpovídá žádné klauzuli z Case.

Po provedení prvního Case odpovídajícího testovanému výrazu skočí vykonávající program na příkaz hned za End Select. Takže v případě, že by testovaný výraz odpovídal i některé následující podmínce tak tato nebude vykonána. Pouze ta "první".

Neodpovídá-li žádný seznam_výrazů Case testovanému_výrazu a neexistuje-li příkaz Case Else, pokračuje běh příkazem následujícím za příkazem End Select.

Příkazy Select Case mohou být vnořené. Každý vnořený příkaz Select Case musí mít odpovídající příkaz End Select.

Příklad Select Case

V příkladu budeme vyhodnocovat odpověď na otázku v MsBoxu.

Private Sub CommandButton1_Click() i = MsgBox("Chcete větši plat?", vbYesNo, "Plat") ' vyhodnocení odpovědi Select Case i Case vbNo MsgBox ("NE") Case vbYes MsgBox ("ANO") End Select End Sub

Příklad 2 - Select Case

Příklad kdy je potřeba použít více podmínek pro jeden výraz.

Case 1 To 4, 7 To 9, 11, 13

Příklad 2 - Select Case

Příklad kdy se kontroluje rozsah.

Case Is > MaxCislo

Příklad 3 - Select Case

Cislo = 8 ' Inicializuj proměnnou. Select Case Cislo ' Vyhodnoť Cislo. Case 1 To 5 ' Cislo leží v intervalu 1 až 5. Debug.Print "Mezi 1 a 5" ' Následující větev Case je jediná, která se vyhodnotí jako True. Case 6, 7, 8 ' Cislo leží v intervalu 6 až 8. Debug.Print "Mezi 6 a 8" Case Is > 8 And Cislo < 11 ' Cislo se rovná 9 nebo 10. Debug.Print "Větší než 8" Case 8 ' Cislo lje 8. ' Následující větev Case ač odpovída podmínce nebude vykonána Debug.Print "Je 8" Case Else ' Jiné hodnoty. Debug.Print "Neleží mezi 1 a 10" End Select

Poznámka: Místo výpisu do MsgBox lze použít Okamžité okno, kde vidíme zda nám příklady fungují.

Postřehy z praxe

Klauzule Case Else se používá k označení elsepříkazů, které se vykonávají, nebude-li v seznamu_výrazů nalezen odpovídající výraz. Sice je volitelný, ale já ho doporučuji dávat. Prostě pro jistotu, kdyby se dostala do case nepředvídantelná hodnota.

Poznámka: Operátor porovnání Is není identický s klíčovým slovem Is používaným v příkazu Select Case.

Další příklady

Méně obvyklé příklady použítí výrazu Case.

Case odpovídá řetězcům, které jsou shodné s “vše“, řetězcům, které náleží mezi “ořechy“ a “polévka“

Case "vše", "ořechy" To "polévka"

Case odpovídá hodnotě proměnné TestItem

Case TestItem

Závěrem

Ostatní nespecifikováno ohledně Case Select, snad někdo z čtenářů zodpoví v komentářích :).

Článek byl aktualizován: 15.12.2011 20:36



| tisk stránky TISK | nahoru NAHORU |
| |

Další články k tématu




Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.


Přidání nového komentáře




(vlož číslo šest)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky a URL. Děkuji za pochopení.
Děkuji, za Vaše komentáře.

Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu.




Nejnovější článek

Z článku o excel jsem jako poslední přidal či upravil článek 14.05.2012:
Kombinování funkcí - vzorců.

Nejčtenější článek




Google+

  

Facebook

facebook  

Novinky

Word: 12.5.2012:
Matematické rovnice (vzorce) - Word 2010

Excel: 14.05.2012:
Kombinování funkcí - vzorců

Access: 28.04.2012:
VBA - Jak spustit v MS Access

Power Point: 25.04.2012:
SmartArt - PowerPoint 2010

Outlook 26.04.2012:
Outlook 2010 - jak vypadá

Project: 05.04.2012:
Kalendář ukázka

OneNote: 17.10.2010:
OneNote 2010 – popis obrazovky

Office 30.04.2012:
Kde hledat odpovědi na dotazy o MS Office

Poděkování

Poděkování patří hlavně mojí nejbáječnější manželce.

LinkedIN

Translate

     

Stránky o MS Office produktu společnosti Micosoft. Neslouží jako technická podpora.
| Email na autora: lasak@centrum.cz | Copyright © : Pavel a Danka 2006 - 2012 |
| Doporučuji: Advokátní kancelář Brno - Dana Lasáková | 753

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.