Структура Селецт Цасе је корисна ВБА структура за одлуке које укључују три или више опција у програму Екцел 2016 (иако ради и са две опције, пружајући алтернативу структури Иф-Онда-Елсе).
Пример за избор случаја
Следећи пример показује како се користи структура Селецт Цасе:
Суб СховДисцоунт3()
Дим Куантити Ас Лонг
Дим Дисцоунт Ас Доубле
Количина = ИнпутБок(“Унесите количину: “)
Изаберите Количина случаја
Случај 0 до 24
Попуст = 0,1
Случај 25 до 49
Попуст = 0,15
Случај 50 до 74
Попуст = 0,2
Случај је >= 75
Попуст = 0,25
Крај Изаберите
МсгБок „Попуст:“ & Попуст
Енд Суб
У овом примеру се процењује променљива Количина. Рутинска провера за четири различита случаја (0–24, 25–49, 50–74 и 75 или више).
Било који број исказа може да прати сваку наредбу Цасе, и сви се извршавају ако је случај истинит. Ако користите само једну наредбу, као у овом примеру, можете ставити наредбу у исти ред са кључном речи Цасе, којој претходи двотачка — знак за раздвајање ВБА исказа. Ово чини код компактнијим и мало јаснијим. Ево како рутина изгледа у овом формату:
Суб СховДисцоунт4 ()
Дим Куантити Ас Лонг
Дим Дисцоунт Ас Доубле
Количина = ИнпутБок(“Унесите количину: “)
Изаберите Количина случаја
Случај 0 до 24: Попуст = 0,1
Случај 25 до 49: Попуст = 0,15
Случај 50 до 74: Попуст = 0,2
Случај је >= 75: Попуст = 0,25
Крај Изаберите
МсгБок „Попуст:“ & Попуст
Енд Суб
Када ВБА изврши структуру Селецт Цасе, структура се напушта чим ВБА пронађе прави случај и изврши наредбе за тај случај.
Пример угнежђеног Селецт Цасе
Као што је показано у следећем примеру, можете угнездити Селецт Цасе структуре. Ова рутина испитује активну ћелију и приказује поруку која описује садржај ћелије. Приметите да процедура има три структуре Селецт Цасе, и свака има свој Енд Селецт наредбу:
Суб ЦхецкЦелл()
Пригуши поруку као стринг
Изаберите Цасе Ис Емпти (АцтивеЦелл)
Цасе Труе
Порука = „је празно.“
Цасе Елсе
Изаберите Цасе АцтивеЦелл.ХасФормула
Цасе Труе
Порука = „има формулу“
Цасе Елсе
Изаберите број великих и малих слова (АцтивеЦелл)
Цасе Труе
Порука = „има број“
Цасе Елсе
Порука = „има текст“
Крај Изаберите
Крај Изаберите
Крај Изаберите
МсгБок “Ћелија” & АцтивеЦелл.Адреса & “ “ & Мсг
Енд Суб
Логика иде отприлике овако:
Сазнајте да ли је ћелија празна.
Ако није празан, погледајте да ли садржи формулу.
Ако нема формуле, сазнајте да ли садржи нумеричку вредност или текст.
Када се рутина заврши, променљива Мсг садржи стринг који описује садржај ћелије. Функција МсгБок приказује ту поруку.
Порука коју приказује процедура ЦхецкЦелл.
Структуре Селецт Цасе можете угнездити онолико дубоко колико је потребно, али уверите се да сваки Селецт Цасе наредба има одговарајући израз Енд Селецт.
Ако још увек нисте уверени да је увлачење кода вредно труда, претходни списак служи као добар пример. Удубљења заиста да би нивои гнежђења били јасни. Погледајте исти поступак без икаквог увлачења:
Суб ЦхецкЦелл()
Затамњење поруке као стринг
Изаберите Цасе Ис Емпти (АцтивеЦелл)
Цасе Труе
Порука = „је празно.“
Цасе Елсе
Изаберите Цасе АцтивеЦелл.ХасФормула
Цасе Труе
Порука = „има формулу“
Цасе Елсе
Изаберите број великих и малих слова (АцтивеЦелл)
Цасе Труе
Порука = „има број“
Цасе Елсе
Порука = „има текст“
Крај Изаберите
Крај Изаберите
Крај Изаберите
МсгБок “Ћелија” & АцтивеЦелл.Адреса & “ “ & Мсг
Енд Суб
Прилично несхватљиво, а?