Иф тхен Елсе Статемент у Екцел ВБА (објашњено са примерима)

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

Ово је изузетно драгоцено у многим ситуацијама, што ћемо видети у примерима касније у овом водичу.

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

Иста логика се може изградити у ВБА користећи Ако тада још изјаву (и наравно учинити много више од истицања оцена).

У овом водичу ћу вам показати различите начине на које се конструкција „Иф тхен Елсе“ може користити у програму Екцел ВБА и неке практичне примере на делу.

Али пре него што пређем на појединости, дозволите ми да вам дам синтаксу изјаве „ИФ тхен Елсе“.

Ако сте заинтересовани за учење ВБА на лак начин, погледајте мој Онлине Екцел ВБА обука.

Синтакса - ИФ Онда другачије

Испод је генеричка синтакса конструкције Иф Тхен Елсе у ВБА

ИФ услов Затим труе_цоде [Елсе фалсе_цоде]

Ор

ИФ услов Затим труе_цоде Елсе фалсе_цоде Крај ИФ

Имајте на уму да је други део ове изјаве опционалан.

Сада, ако се питате која је разлика између две синтаксе, дозволите ми да појасним.

Прва синтакса је једноставна једноредна наредба ИФ ТХЕН ЕЛСЕ у којој не морате да користите наредбу ЕНД ИФ.

Међутим, у другој синтакси, део труе_цоде је у другом реду. Ово је корисно када је код који морате покренути у случају да је услов ИФ тачан дугачак и састоји се од више редова.

Када поделите ИФ израз у више редова, морате рећи ВБА где се завршава конструкција ИФ Тхен.

Због тога морате користити Енд ИФ наредбу.

У случају да не користите Енд ИФ када је потребно, ВБА ће вам приказати грешку - „Блокирај ИФ без ЕНД ИФ“

Примери коришћења ИФ Тхен изјаве у ВБА

Да бих вам дао идеју о томе како изјава ИФ-ТХЕН функционише у ВБА, дозволите ми да почнем са неким основним примерима (неки практични и кориснији примери биће обрађени касније у овом водичу).

Претпоставимо да имате резултат ученика у ћелији А1 и желите да проверите да ли је студент положио испит или није (праг за полагање оцена је 35).

Тада можете користити следећи код:

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе> = 35 тхен МсгБок "Пасс" Енд Суб

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

Ако је више од 35, приказује се порука - „Прођи“.

Ако је мање од 35, ништа се неће догодити.

Али шта ако желите да прикажете поруку у оба случаја, без обзира да ли је студент положио или пао испит.

Код испод би ово урадио:

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе> = 35 тхен МсгБок "Пасс" Елсе МсгБок "Фаил" Енд Иф Енд Суб

Горњи код користи ИФ као и ЕЛСЕ израз за извршавање два различита услова. Када је резултат већи од (или једнак) 35, услов ИФ је тачан, а код испод њега се извршава (све пре наредбе Елсе).

Али када је ИФ услов ФАЛСЕ, код скаче на део Елсе и извршава кодни блок у њему.

Имајте на уму да када користимо један ред наредбе ИФ Тхен, не морамо да користимо Енд ИФ. Али када га поделимо на више линија, морамо да употребимо наредбу Енд Иф.

Угнијежђено ИФ Тхен (Више наредби ИФ Тхен)

До сада смо користили једну изјаву ИФ Тхен.

У случају да морате да проверите више услова, можете користити:

  • Више услова ИФ
  • Ако Онда Друга изјава
  • ИФ Затим Остало Ако конструишете друго

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

Више ИФ Тада изјава

Узмимо исти пример коришћења оцене ученика.

Ако је ученик постигао мање од 35 бодова, приказана порука је „Није успело“, ако је резултат већи или једнак 35, порука коју треба приказати је „Положите“.

Да бисмо то урадили, можемо користити доњи код:

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе = 35 Тхен МсгБок "Пасс" Енд Суб

Можете користити више наредби ИФ Тхен као што је приказано горе. Иако ово функционише, то није пример доброг кодирања (као што ћете видети алтернативе испод).

У случају да се одлучите за ово, имајте на уму да би ове изјаве требале бити независне или међусобно искључиве. Важна ствар коју треба знати је да се у горњој конструкцији вреднују сви ИФ изрази, а они у којима је услов тачан се извршава.

Дакле, чак и ако је прва ИФ тврдња тачна, друга би се и даље вредновала.

АКО Онда Друга изјава

Претпоставимо да овај пут, уместо да само прикажемо поруку Пасс/Фаил, имамо још један услов.

Ако је ученик постигао мање од 35 бодова, порука за приказ је „Није успело“, ако је резултат већи или једнак 35, порука за приказ је „Пролази“, а ако је резултат већи од 80, порука за приказ је 'Пасс, витх Дистинцтион'.

Да бисмо то урадили, можемо користити доњи код:

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе <35 тхен МсгБок "Фаил" Елсе Иф Ранге ("А1"). Валуе <80 тхен МсгБок "Пасс" Елсе МсгБок "Пасс, витх тхе дистинктион" Енд Иф Енд Иф Енд Суб

У горњем коду смо користили више ИФ наредби (угнежђено ИФ Затим) уз помоћ Елсе.

Дакле, постоји конструкција „ИФ Тхен Елсе“ унутар конструкције „ИФ Тхен Елсе“. Ова врста гнежђења вам омогућава да проверите више услова и покренете одговарајући блок кода.

АКО Затим Остало Изјава

Горњи код (који смо видели у претходном одељку) може се додатно оптимизовати коришћењем наредбе ЕлсеИф.

Ево шта покушавамо да урадимо - Ако ученик постигне мање од 35 бодова, приказана порука је „Није успело“, ако је резултат већи или једнак 35, порука за приказ је „Положите“, а ако је резултат је већи од 80, порука за приказ је 'Пасс, витх Дистинцтион'.

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе <35 тхен МсгБок "Фаил" ЕлсеИф Ранге ("А1"). Валуе <80 тхен МсгБок "Пасс" Елсе МсгБок "Пасс, витх тхе дистинцтион" Енд Иф Енд Суб

Горњи код користи ЕлсеИф, који нам омогућава да све услове држимо у једној јединој наредби ИФ Тхен.

Коришћење АНД и ОР у ИФ Тхен Елсе

До сада смо у овом водичу проверили само један услов одједном.

Међутим, када имате више зависних услова, можете користити израз АНД или ОР са ИФ условима.

Испод је синтакса коришћења АНД/ОР услова са наредбом ИФ Тхен.

ИФ Услов1 И Услов2 Затим труе_цоде Остало фалсе_цоде Крај ИФ

У горњем коду се извршава само труе_цоде само када су испуњени и Цондитион1 и Цондитион2. Чак и ако је један од услова нетачан, извршиће фалсе_цоде.

Са ОР, чак и ако је један од услова тачан, извршиће труе_цоде. Само када су сви услови лажни, извршава се шифра фалсе_цоде.

Сада да видимо како наредбе АНД и ОР функционишу са конструкцијом ИФ Тхен Елсе.

Претпоставимо да имате бодове за два предмета уместо за један и желите да проверите следеће услове:

  • Неуспех - Када је резултат мањи од 35 у било којем од предмета.
  • Пасс - Када је резултат већи или једнак 35, али мањи од 80 у оба предмета.
  • Врло добар - Када је резултат већи од 35 у оба предмета и већи или једнак 80 у једном или оба предмета.

Ево кода који ће то учинити:

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе <35 Ор Ранге ("Б1"). Валуе <35 тхен МсгБок "Фаил" ЕлсеИф Ранге ("А1"). Валуе <80 Анд Ранге ("Б1"). Вредност <80 Затим МсгБок "пролази" Остало МсгБок "пролази, са дистинкцијом" Енд Иф Енд Суб

Горњи код користи и ОР и АНД изразе.

Такође можете написати исти код са незнатном променом (користећи ИЛИ уместо АНД).

Суб ЦхецкСцоре () Иф Ранге ("А1"). Валуе <35 Ор Ранге ("Б1"). Валуе 80 Ор Ранге ("Б1"). Валуе> 80 тхен МсгБок "Пасс, витх тхе дистинцтион" Елсе МсгБок "Пасс" Енд Ако Енд Суб

Оба горња ВБА кода даће вам исти резултат. Лично, више волим прву јер има логичан ток провере резултата (али то сам само ја).

Употреба Нот Екуал то ин Иф Тхен

У свим горе наведеним примерима користили смо услове који проверавају да ли је вредност једнака наведеној вредности или не.

Сличне кодове можете користити и када проверавате када вредност није једнака наведеној вредности у ВБА коду. Није једнако ономе што представља Екцел ВБА.

Да бисте видели практичан пример коришћења, погледајте Пример 1 испод.

Употреба Иф Тхен Елсе са петљама у ВБА

До сада смо пролазили кроз неке примере који су добри за разумевање како изјаве „АКО-ОНДА“ функционишу у ВБА, међутим, нису корисне у свету праксе.

Ако треба да оценим ученике, то могу лако да урадим помоћу Екцел функција.

Па хајде да погледамо неке корисне и практичне примере који вам могу помоћи да аутоматизујете неке ствари и будете ефикаснији.

Пример 1 - Сачувајте и затворите све радне свеске осим активне свеске

Ако имате много отворених радних свезака и брзо желите да затворите све, осим активне радне свеске, можете користити доњи код,

Суб СавеЦлосеАллВоркбоокс () Дим вб Као радна свеска За сваку вб У радним свескама На грешци настави следеће Ако је вб.Име АцтивеВоркбоок.Наме Затим вб.Саве вб.Затвори крај ако следеће вб Заврши под

Горњи код би сачувао и затворио све радне свеске (осим активне).

Користи петљу Фор Нект за пролазак кроз збирку свих отворених радних свезака и проверава име помоћу услова ИФ.

Ако име није исто као у активној радној свесци, чува се и затвара.

У случају да у било којој радној свесци постоји ВБА код, а нисте га сачували као .клс или .клсм, видећете упозорење (пошто се вба кодови губе када га сачувате у .клск формату).

Пример 2 - Означите ћелије са негативним вредностима

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

Суб ХигхлигхтНегативеЦеллс () Дим Цлл Ас Ранге фор еацх Цлл Ин Селецтион Иф Цлл.Валуе <0 тхен Цлл.Интериор.Цолор = вбРед Цлл.Фонт.Цолор = вбВхите Енд Иф Нект Цлл Енд Суб

Горњи код користи петљу За свако и проверава сваку ћелију у избору који сте направили. Ако вредност ћелије има негативну вредност, означена је црвеном бојом са белом бојом фонта.

Пример 3 - Сакријте сав радни лист осим тренутног радног листа

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

Под ХидеАллЕкцептАцтивеСхеет () Дим вс као радни лист за сваки вс у ТхисВоркбоок.Ворксхеетс Иф вс.Наме АцтивеСхеет.Наме Затим вс.Висибле = клСхеетХидден Следећи вс Енд Суб

Горњи код користи петљу За свако за пролазак кроз збирку радних листова. Он проверава назив сваког радног листа и сакрива га ако то није активни радни лист.

Пример 4 - Издвојите нумерички део из алфанумеричког низа

Ако имате алфанумеричке низове у ћелијама и желите да из њих извучете нумерички део, то можете учинити помоћу доњег кода:

Функција ГетНумериц (ЦеллРеф Ас Стринг) Дим СтрингЛенгтх Ас Интегер СтрингЛенгтх = Лен (ЦеллРеф) Фор и = 1 То СтрингЛенгтх Иф ИсНумериц (Мид (ЦеллРеф, и, 1)) тхен Ресулт = Ресулт & Мид (ЦеллРеф, и, 1) Нект и ГетНумериц = Крајња функција резултата

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

Где ставити ВБА код?

Питате се где се ВБА код налази у вашој Екцел радној свесци?

Екцел има ВБА позадину која се зове ВБ едитор. Морате да копирате и залепите код у прозор кода модула ВБ Едитор.

Ево корака за то:

  1. Идите на картицу Девелопер.
  2. Кликните на опцију Висуал Басиц. Ово ће отворити ВБ едитор у позадини.
  3. У окну Пројецт Екплорер у ВБ Едитор-у кликните десним тастером миша на било који објекат радне свеске у који желите да уметнете код. Ако не видите Пројецт Екплорер, идите на картицу Виев и кликните на Пројецт Екплорер.
  4. Идите на Уметни и кликните на Модул. Ово ће уметнути објект модула за вашу радну свеску.
  5. Копирајте и залепите код у прозор модула.

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

wave wave wave wave wave