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

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak vykonat jednu skupinu příkazů z několika, podle hodnoty výrazu.

Doplněno: 2.8.2015

Úvodem

Select Case Excel VBA - ukázka

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 slevy podle hodnoty objednávky. Kontrola dle zadaného textu.

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ší z důvodu přelednosti použít Select Case. Co kdy záleží na každém programátorovi.


Teorie a syntaxe Select Case

Vhodná pro rozhodování mezi třemi a více možnostmi. Je alternativou k If Then.

Syntaxe

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

Popis argumentu

  • 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.

Vyhodnocení dvou podmínek

V příkladu budeme vyhodnocovat odpověď na otázku z MsBoxu. MsgBox vrací odpověď vbNo, vbYes do promění i. Odpovědět lze pouze ANO, NE.

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

Více podmínek v jedné case - Select Case

Příklad kdy je potřeba použít více podmínek pro jeden výraz. VYužívá se čárka pro další podmínku nebo To pro rozsah.

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

Sudé nebo liché

Schválně je využito vyjmenování jednotlivých čísel. Lze řešit i jako zjištění zda je číslo dělitelné 2 bezezbytku, atd.

Cislo = InputBox("Zadej číslo 1 to 10:") Select Case Cislo Case 2, 4, 6, 8, 10 MsgBox "číslo sudé." Case 1, 3, 5, 7, 9 MsgBox "číslo liché." Case Else MsgBox "Nelze rozhodnout." End Select

Podle rozsahu

Rozhodnutí zda číslo patří do určitého rozsahu.

Cislo = InputBox("Zadej číslo 1 to 10:") ' rozhodnutí Select Case Cislo Case 1 To 3 MsgBox "Číslo: 1 až 3" Case 4 To 6, 10 MsgBox "Číslo 4,5,6, 10" Case 7 To 9 MsgBox "Číslo 7,8,9" Case Else MsgBox "Nelze rozhodnout." End Select

Kontrola podle rozsahu

Příklad kdy se kontroluje rozsah.

Case Is > MaxCislo

Podle čísla

Je větší, menší, rovno danému číslu? Protože se porovnává číslo je nutno uvést Is.

Cislo = InputBox("Zadej číslo 1 to 10:") ' Je číslo menší, větší rovno dvě? Select Case Cislo Case Is < 2 MsgBox "Číslo je menší než 2" Case Is = 2 MsgBox "Číslo je 2" Case Is > 2 MsgBox "Číslo je větší než 2" End Select

Číslo na slovní hodnocení

Využití pro kontrolu studijních výsledku a přepsaní bodového hodnocení na slovní.

Cislo = Range("B16").Value Select Case Cislo Case Is >= 90 result = "Excelentní" Case Is >= 70 result = "velmi dobré" Case Is >= 50 result = "dobré" Case Is >= 20 result = "nic moc" Case Else result = "velice špatné" End Select MsgBox (result)

Praktická ukázka - 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í.

Porovnávání textů

Méně obvyklé příklady použítí výrazu Select Case například pro text a rozsah textů.

Case odpovídá řetězcům, které jsou shodné s “vše“, řetězcům, které náleží mezi “aa“ a “ccc“. Excel porovnává velká a malá písmena (velikost znaku se převezme z ASCII tabulky.

' A < B < E < Z < a < b < e < z Case "aa" To "ccc"

Kontrola dle zadaných textů

Zadávájí se názvy ovoce a zeleniny a podle zadání Case Select vypíše zda jde o ovoce nebo zeleninu. Pokud v seznamu není uvedeno bude vypsáno, že nelze rozhonout.

Hodnota = InputBox("Zadej ovoce, zelenina:") ' rozhodnutí co bylo zadáno - ovoce, zelenina Select Case Hodnota Case "Jablko", "Hruška", "Banan", "Jahoda" MsgBox "Jde o ovoce ..." Case "Mrkev", "Petržel", "zelí" MsgBox "Jde o zeleninu ..." Case Else MsgBox "Nemůžu rozhodnout." End Select

Rozsah textů

Pro rozsah textu Excel počítá s velikosti písmen (viz ASCII tabulka)

Select Case Range("B20").Text Case "aa" To "dd" MsgBox "aa - dd" Case Else MsgBox "ostatní" End Select

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 používat.

Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor Case Select - Excel VBA - praktické příklady soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra.


Další související články

Závěrem

Tento článek je součástí on-line výukového kurzu VBA MS Excel.

Napada-li Vás doplnění k Case Select? Můžete využít komentáře.

Článek byl aktualizován: 02.08.2015 09:57

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2000 (od 2004 ne této doméně) - Roku 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici také na on-line videích pro SEDUO. Školím a konzultuji, učím na MUNI. Hlavně tvořím tento web. Je zde k dispozici přes 1.000 návodu, tipů a triků včetně stovek různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře zatím nejsou

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







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2017 | 32010

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