Екцел ВБА Избор случаја - објашњено са примерима

Екцел ВБА има конструкцију ИФ Тхен Елсе коју можете користити за анализу више услова и извршавање кодова на основу ових услова.

Још једна слична конструкција која вам омогућава да проверите више услова је СЕЛЕЦТ ЦАСЕ изјава.

Изабери случај је корисно ако имате три или више услова које желите да проверите. Ово такође можете користити са два услова (али осећам да је у том случају лакше користити Елсе).

Једноставан пример где је изјава „Изабери случај“ корисна када желите да добијете оцену ученика на основу оцена које је постигао (обрађен као пример касније у овом водичу).

Напомена: Сви примери кодова обухваћени овим водичем намењени су постављању у модул у ВБА.

Изаберите Синтакса великих и малих слова

Испод је синтакса Селецт Цасе у Екцел ВБА:

Одаберите Цасе Тест_Екпрессион Цасе Валуе_1 Кодни блок када је Тест_Екпрессион = Валуе_1 Вредност случаја_2 Блокиран код када је Тест_Екпрессион = Валуе_2 Вредност случаја_3 Кодни блок када Тест_Екпрессион = Валуе_3 Други блок кода случаја када није испуњен ниједан од великих услова Крај Енд Селецт
  • Тест_Екпрессион: Ово је израз чију вредност анализирамо коришћењем различитих случајева (боље објашњено са примерима испод).
  • Услов_1, Услов_2, …: Ово су услови под којима се текстуални израз тестира. Ако испуњава услов, извршава се кодни блок за дати услов.

За сваку наредбу Селецт Цасе коју користите, морате користити наредбу Енд Селецт.

Белешка: Чим је услов испуњен, ВБА напушта конструкцију изабраног случаја. Дакле, ако имате пет услова, а други услов је испуњен, ВБА би изашао из изабраног случаја - а остали услови неће бити тестирани.

Одаберите примере случајева

Сада да бисмо боље разумели како користити изјаву Селецт Цасе у ВБА, прођимо кроз неколико примера.

Имајте на уму да је већина примера у овом водичу намењена објашњењу концепта. Ово може или не мора бити најбољи начин да се посао обави.

Почнимо са једноставним примером да видимо како нам Селецт Цасе омогућава проверу услова.

Пример 1 - Проверите бројеве

У доњем примеру, код тражи од корисника да унесе било који број између 1 и 5, а затим приказује оквир за поруку са бројем који је корисник унео.

Суб ЦхецкНумбер () Дим УсерИнпут Ас Интегер УсерИнпут = ИнпутБок ("Молимо унесите број између 1 и 5") Изаберите Цасе УсерИнпут Цасе 1 МсгБок "Унели сте 1" Цасе 2 МсгБок "Унели сте 2" Цасе 3 МсгБок "Унели сте 3" Случај 4 МсгБок "Унели сте 4" Случај 5 МсгБок "Унели сте 5" Крај Изабери Крај Под

Имајте на уму да овај код није далеко од користи и чак није ни сигуран. На пример, ако унесете 6 или било који низ, то неће ништа учинити. Али као што сам споменуо, моја намера је да покажем како Селецт Цасе функционише.

Пример 2 - Коришћење Селецт Цасе са ИС условом

Можете да користите ИС услов са конструкцијом Селецт Цасе да проверите вредност бројева.

Код испод проверава да ли је улазни број већи од 100 или не.

Суб ЦхецкНумбер () Дим УсерИнпут Ас Интегер УсерИнпут = ИнпутБок ("Молимо унесите број") Изабери случај УсерИнпут Цасе Ис = 100 МсгБок "Унели сте број већи (или једнак) 100" Крај Изаберите Енд Суб

Пример 3 - Употреба другог случаја за хватање свих

У горњем примеру сам користио два услова (мање од 100 или веће или једнако 100).

Уместо другог случаја са условом, можете користити и Цасе Елсе.

Случај Елсе понаша се као свеобухватан и све што не спада у претходне случајеве третира Случај Остали.

Испод је пример кода где сам користио Цасе Елсе:

Суб ЦхецкНумбер () Дим УсерИнпут Ас Интегер УсерИнпут = ИнпутБок ("Плеасе ентер а нумбер") Селецт Цасе УсерИнпут Цасе је <100 МсгБок "Унели сте број мањи од 100" Цасе Елсе МсгБок "Унели сте број већи од (или једнак ) 100 "Енд Одаберите Енд Суб

Пример 4 - Коришћење опсега бројева

У Селецт Цасе -у такође можете проверити распон бројева.

Код испод тражи унос и приказује оквир за поруку на основу вредности.

Суб ЦхецкНумбер () Дим УсерИнпут Ас Интегер УсерИнпут = ИнпутБок ("Молимо унесите број између 1 и 100") Селецт Цасе УсерИнпут Цасе 1 то 25 МсгБок "Унели сте број мањи од 25" Цасе 26 То 50 МсгБок "Унели сте број између 26 и 50 "Цасе 51 То 75 МсгБок" Унели сте број између 51 и 75 "Цасе 75 То 100 МсгБок" Унели сте број већи од 75 "Енд Селецт Енд Суб

Пример 5 - Оцените на основу постигнутих оцена

До сада смо видели основне примере (који нису баш корисни у свету праксе).

Ево примера који је ближи примеру из стварног света где можете да користите Селецт Цасе у програму Екцел ВБА.

Следећи код ће вам дати оцену коју студент добија на основу оцена на испиту.

Подразред () Дим СтудентМаркс Ас Интегер Дим ФиналГраде Ас Стринг СтудентМаркс = ИнпутБок ("Ентер Маркс") Селецт Цасе СтудентМаркс Цасе Ис <33 ФиналГраде = "Ф" Цасе 33 То 50 ФиналГраде = "Е" Цасе 51 то 60 ФиналГраде = "Д "Цасе 60 То 70 ФиналГраде =" Ц "Цасе 70 то 90 ФиналГраде =" Б "Цасе 90 То 100 ФиналГраде =" А "Енд Селецт МсгБок" Тхе Граде ис "& ФиналГраде Енд Суб

Горњи код тражи од корисника оцене и на основу њега приказује оквир за поруку са коначном оценом.

У горњем коду сам навео све услове - за ознаке 0 - 100.

Други начин коришћења Селецт Цасе је коришћење Цасе Елсе на крају. Ово је корисно када сте узели у обзир све услове, а затим одредили шта да радите када ниједан од услова није испуњен.

Код испод је варијација кода разреда са мањом променом. На крају, има наредбу Цасе елсе, која ће се извршити ако ниједан од горе наведених услова није тачан.

Суб ЦхецкОддЕвен () Дим СтудентМаркс Ас Интегер Дим ФиналГраде Ас Стринг СтудентМаркс = ИнпутБок ("Ентер Маркс") Селецт Цасе СтудентМаркс Цасе Ис <33 ФиналГраде = "Ф" Цасе 33 То 50 ФиналГраде = "Е" Цасе 51 То 60 ФиналГраде = "Д "Цасе 60 То 70 ФиналГраде =" Ц "Цасе 70 то 90 ФиналГраде =" Б "Цасе Елсе ФиналГраде =" А "Енд Селецт МсгБок" Тхе Граде ис "& ФиналГраде Енд Суб

Пример 6 - Креирање прилагођене функције (УДФ) помоћу Селецт Цасе

У горњем примеру, код је тражио од корисника унос оцена.

Такође можете да креирате прилагођену функцију (Кориснички дефинисана функција) која се може користити као и свака обична функција радног листа и која ће вратити оцену ученицима.

Испод је код који ће створити прилагођену формулу:

Функција ГетГраде (СтудентМаркс Ас Интегер) Дим ФиналГраде Ас Стринг Селецт Цасе СтудентМаркс Цасе Ис <33 ФиналГраде = "Ф" Цасе 33 То 50 ФиналГраде = "Е" Цасе 51 то 60 ФиналГраде = "Д" Цасе 60 То 70 ФиналГраде = "Ц" Случај 70 до 90 ФиналГраде = "Б" Цасе Елсе ФиналГраде = "А" Енд Селецт ГетГраде = ФиналГраде Енд Функција

Када унесете овај код у модул, можете користити функцију ГетГраде на радном листу као што је приказано испод.

Пример 7 - Проверите ОДД / ЕВЕН са Селецт Цасе

Испод је пример кода где проверавам да ли је број у ћелији А1 непаран или паран.

Суб ЦхецкОддЕвен () ЦхецкВалуе = Ранге ("А1"). Валуе Селецт Цасе (ЦхецкВалуе Мод 2) = 0 Цасе Труе МсгБок "Број је паран" Цасе Фалсе МсгБок "Број је непаран" Енд Селецт Енд Суб

Пример 8 - Провера за радни дан/викенд (више услова)

Такође можете користити Селецт Цасе за проверу више вредности у истом случају.

На пример, доњи код користи тренутни датум да покаже да ли је данас радни дан или викенд (где су дани викенда субота и недеља)

Под ЦхецкВеекдаи () Изаберите случај Радни дан (сада) Случај 1, 7 МсгБок "Данас је викенд" Случај Остало МсгБок "Данас је дан у недељи" Крај Изаберите Крај Под

У горњем коду проверавамо да ли постоје два услова (1 и 7) у истом случају.

Напомена: Функција радног дана враћа 1 за недељу и 7 за суботу.

Пример 9 - Уметнути изјави о изабраним случајевима

Такође можете угнездити једну изјаву Изабери случај у другу.

Испод је код који проверава да ли је дан радним даном или викендом, а ако је викенд, онда ће се приказати да ли је субота или недеља.

Суб ЦхецкВеекдаи () Изаберите случај Радни дан (сада) Цасе 1, 7 Селецт Цасе Веекдаи (Нов) Цасе 1 МсгБок "Тодаи ис Сундаи" Цасе Елсе МсгБок "Тодаи ис Сатурдаи" Енд Селецт Цасе Елсе МсгБок "Тодаи ис а Веекдаи" Енд Селецт Енд Суб

У горњем коду угнеждио сам Селецт Цасе да проверим да ли је викенд субота или недеља.

Напомена: Горњи пример објашњава објашњење концепта. Ово није најбољи или најпрактичнији начин да сазнате радним даном/викендом.

Пример 10 - Провера текстуалног низа са великим словима

Можете проверити одређене низове помоћу Селецт Цасе, а затим извршити код на основу тога.

У доњем примеру кода, тражи од корисника да унесе назив свог одељења и приказује име особе са којом би требало да се повеже ради укључивања.

Суб ОнбоардЦоннецт () Дим Департмент Ас Стринг Департмент = ИнпутБок ("Унесите назив свог одељења") Изаберите Случај одељења Случај "Маркетинг" МсгБок "Молимо вас да се повежете са Бобом Раинесом за укључивање" Цасе "Финанце" МсгБок "Молимо вас да се повежете са Патрициа Цруз за укључивање" Случај "ХР" МсгБок "Молимо вас да се повежете са Оливером Рандом за укрцавање" Случај "Администратор" МсгБок "Молимо вас да се повежете са Хелен Хуме за укрцавање" Случај Елсе МсгБок "Молимо вас да се повежете са Тонијем Рандаллом за укрцавање" Крај Изаберите крај Суб

Надам се да су сви горе наведени примери били од помоћи при разумевању концепта и примене Селецт Цасе у програму Екцел ВБА.

Можда ће вам се допасти и следећи ВБА водичи:

  • Екцел ВБА петље - За следеће, Урадите док, Урадите до, За сваку.
  • За следећу петљу у програму Екцел ВБА.
  • Како снимити макро у програму Екцел.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave