ВБА Иф, ЕлсеИф, Елсе (Ултимативни водич за Иф изјаве)

ВБА Иф Статемент

Ако онда

ВБА Ако вам изрази дозвољавају да тестирате да ли су изрази ТРУЕ или ФАЛСЕ, покрените другачији код на основу резултата.Погледајмо једноставан пример:
1 Ако је опсег ("а2"). Вредност> 0 Затим опсег ("б2"). Вредност = "позитивно"
Ово проверава да ли је вредност у опсегу А2 већа од 0. Ако је тако, подешавање опсега Б2 на „Позитивно“Напомена: Приликом тестирања услова користићемо операторе упоређивања =,>, <,, =. О њима ћемо детаљније разговарати касније у чланку.Ево синтаксе за једноставну једноредну наредбу Иф:
1 Ако [тест_екпрессион] онда [акција]
Да бисте олакшали читање, можете користити знак за наставак линије (доња црта) да бисте проширили наредбе Иф на два реда (као што смо учинили на горњој слици):
12 Ако је [тест_екпрессион] онда _[поступак]
12 Ако је опсег ("а2"). Вредност> 0 Тада _Опсег ("б2"). Вредност = "Позитивно"

Крај Ако

Горњи израз „једноструки“ ако ради добро када тестирате један услов. Али како ваше ИФ изјаве постају компликованије са више услова, мораћете да додате „Енд Иф“ на крај иф наредбе:
123 Ако је опсег ("а2"). Вредност> 0 ЗатимОпсег ("б2"). Вредност = "Позитивно"Крај Ако

Овде је синтакса:

123 Ако [тест_екпрессион] онда[поступак]Крај Ако

Крај Иф означава крај иф наредбе.

Сада додајмо ЕлсеИФ:

ЕлсеИФ - Више услова

ЕлсеИф се додаје постојећој наредби Иф. Остало проверава да ли је услов испуњен САМО ако претходни услови нису испуњени.У претходном примеру смо тестирали да ли је вредност ћелије позитивна. Сада ћемо такође тестирати да ли је вредност ћелије негативна са ЕлсеИф:
12345 Ако је опсег ("а2"). Вредност> 0 ЗатимОпсег ("б2"). Вредност = "Позитивно"Остали опсег ("а2"). Вредност <0 ЗатимОпсег ("б2"). Вредност = "Негативно"Крај Ако

Можете користити више ЕлсеИфс -а за тестирање више услова:

1234567891011 Суб Иф_Мултипле_Цондитионс ()Иф Ранге ("а2"). Валуе = "Цат" ОндаОпсег ("б2"). Вредност = "Мјау"ЕлсеИф Ранге ("а2"). Валуе = "Дог" ЗатимОпсег ("б2"). Вредност = "Вооф"ЕлсеИф Ранге ("а2"). Валуе = "Дуцк" ЗатимОпсег ("б2"). Вредност = "Шарлатан"Крај АкоЕнд Суб

Сада ћемо додати ан Иначе:

Иначе

Тхе Иначе покренуће се ако нису испуњени други претходни услови.

Наш пример ћемо завршити коришћењем Елсе да означимо да ако вредност ћелије није позитивна или негативна, онда мора бити нула:

1234567 Ако је опсег ("а2"). Вредност> 0 ЗатимОпсег ("б2"). Вредност = "Позитивно"Остали опсег ("а2"). Вредност <0 ЗатимОпсег ("б2"). Вредност = "Негативно"ИначеОпсег ("б2"). Вредност = "Нула"Крај Ако

Ако друго

Најчешћи тип наредбе Иф је једноставан Иф-Елсе:

1234567 Суб Иф_Елсе ()Ако је опсег ("а2"). Вредност> 0 ЗатимОпсег ("б2"). Вредност = "Позитивно"ИначеОпсег ("б2"). Вредност = "Није позитивно"Крај АкоЕнд Суб

Уметнути ИФ -ови

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

1234567891011 Под Н угнежђени_Ифс ()Ако је опсег ("а2"). Вредност> 0 ЗатимОпсег ("б2"). Вредност = "Позитивно"ИначеАко је опсег ("а2"). Вредност <0 ЗатимОпсег ("б2"). Вредност = "Негативно"ИначеОпсег ("б2"). Вредност = "Нула"Крај АкоКрај АкоЕнд Суб

АКО - Или, И, Ксор, Не

Затим ћемо расправљати о логичким операторима: Или, И, Ксор, Не.

И за

Тхе Ор оператерски тестови ако испуњен је бар један услов.

Следећи код ће тестирати да ли је вредност у опсегу А2 мања од 5.000 или већа од 10.000:

123 Ако Ранге ("а2"). Вредност 10000 ЗатимОпсег ("б2"). Вредност = "Ван опсега"Крај Ако

Можете да уврстите више Орс -ова у један ред:

123 Ако је опсег ("а2"). Вредност 10000 или опсег ("а2"). Вредност = 9999 ЗатимОпсег ("б2"). Вредност = "Ван опсега"Крај Ако

Ако ћете користити више Орс -а, препоручује се употреба знака за наставак линије да би се ваш код лакше читао:

123456 Ако је опсег ("а2"). Вредност <5000 Или _Опсег ("а2"). Вредност> 10000 Или _Опсег („а2“). Вредност = 9999 ЗатимОпсег ("б2"). Вредност = "Ван опсега"Крај Ако

Ако је Анд

Оператор Анд вам омогућава да тестирате да ли је СВИ услови су испуњени.

123 Ако је Опсег ("а2"). Вредност> = 5000 И Опсег ("а2"). Вредност <= 10000 ЗатимОпсег ("б2"). Вредност = "У опсегу"Крај Ако

Ако је Ксор

Оператор Ксор вам омогућава да тестирате да ли је испуњен је тачно један услов. Ако су испуњени нула услови Ксор ће вратити ФАЛСЕ, Ако су испуњена два или више услова, Ксор ће такође вратити фалсе.

Ретко сам видео да се Ксор користи у ВБА програмирању.

Ако не

Оператор Нот се користи за претварање ФАЛСЕ у ТРУЕ или ТРУЕ у ФАЛСЕ:

123 Суб ИФ_Нот ()МсгБок Нот (Труе)Енд Суб

Приметите да оператор Нот захтева заграде око израза за пребацивање.

Оператор Нот се такође може применити на наредбе Иф:

123 Ако није (Опсег ("а2"). Вредност> = 5000 И Опсег ("а2"). Вредност <= 10000) ЗатимОпсег ("б2"). Вредност = "Ван опсега"Крај Ако

Ако поређења

Приликом поређења обично ћете користити један од оператора поређења:

Оператор поређења Објашњење
= Једнако
Неједнако са
> Веће од
>= Већи или једнак
< Мање од
<= Мање или једнако

Међутим, можете користити и било који израз или функцију што резултира тачним или нетачним

Ако - Боолеова функција

Приликом израде израза за Иф наредбе можете користити и било коју функцију која генерише ТРУЕ или Фалсе. ВБА има неколико ових функција:

Функција Опис
ИсДате Враћа ТРУЕ ако је израз важећи датум
Празно Проверите да ли има празних ћелија или недефинисаних променљивих
ИсЕррор Проверите вредности грешака
ИсНулл Проверите НУЛЛ вредност
ИсНумериц Проверите нумеричку вредност

Могу се назвати овако:

1 Ако је ИсЕмпти (Опсег ("А1"). Вредност) Тада мсгБок "Ћелија празна"

Екцел такође има многе додатне функције које се могу позвати помоћу функције ВорксхеетФунцтион. Ево примера Екцел исТект функције:

12 Ако Апплицатион.ВорксхеетФунцтион.ИсТект (Опсег ("а2"). Вредност) Затим _МсгБок "Ћелија је текст"

Такође можете креирати сопствене кориснички дефинисане функције (УДФ). У наставку ћемо створити једноставну логичку функцију која враћа ТРУЕ. Тада ћемо позвати ту функцију у нашој наредби Иф:

1234567891011 Суб Иф_Фунцтион ()Ако ТруеФунцтион ТадаМсгБок "Труе"Крај АкоЕнд СубФункција ТруеФунцтион () Као БоолеоваТруеФунцтион = ТачноЗавршна функција

Упоређивање текста

Такође можете упоредити текст сличан поређењу бројева:
1 Мсгбок "а" = "б"
1 Мсгбок "а" = "а"
Када упоређујете текст, морате имати на уму „Велика слова“ (горња или доња). Подразумевано, ВБА сматра слова са различитим падежима као неподударна. Другим речима, „А“ „а“.Ако желите да ВБА игнорише велика и мала слова, морате да додате Оптион Цомпаре Тект декларацију на врх вашег модула:
1 Опција Упореди текст

Након што сте дали ту изјаву „А“ = „а“:
12345 Опција Упореди текстСуб Иф_Тект ()МсгБок "а" = "А"Енд Суб

ВБА ако вам се свиђа

ВБА Лике Оператор вам омогућава да направите нетачна поређења текста. Кликните на везу „Свиђа ми се оператеру“ да бисте сазнали више, али у наставку ћемо приказати основни пример:

12345678 Дим стрНаме као СтрингстрНаме = "Господин Цхарлес"Ако стрНаме Као "Мр*" ОндаМсгБок "Труе"ИначеМсгБок "Фалсе"Крај Ако

Овде користимо џокер са звездицом „*“. * Означава било који број знакова. Дакле, горња наредба Иф ће вратити ТРУЕ. Оператор Лике је изузетно моћан, али често недовољно коришћен алат за бављење текстом.

Иф Лоопс

ВБА петље омогућавају понављање радњи. Комбиновање ИФ-ЕЛСЕ-ова са петљама одличан је начин за брзу обраду многих прорачуна.

Настављајући са нашим позитивним / негативним примером, додаћемо за сваку петљу за петљу кроз низ ћелија:

1234567891011121314 Суб Иф_Лооп ()Дим Целл ас РангеЗа сваку ћелију у домету ("А2: А6")Ако је Целл.Валуе> 0 ТадаЦелл.Оффсет (0, 1) .Валуе = "Позитивно"ЕлсеИф Целл.Валуе <0 ЗатимЦелл.Оффсет (0, 1) .Валуе = "Негативно"ИначеЦелл.Оффсет (0, 1) .Валуе = "Нула"Крај АкоСледећа ћелијаЕнд Суб

Ако су други примери

Сада ћемо прећи на неке конкретније примере.

Проверите да ли је ћелија празна

Овај код ће проверити да ли је ћелија празна. Ако је празна, игнорисаће ћелију. Ако није празно, вредност ћелије ће се приказати у ћелији десно:
1234567 Суб Иф_Целл_Емпти ()Ако Ранге ("а2"). Вредност "" ЗатимОпсег ("б2"). Вредност = Опсег ("а2"). ВредностКрај АкоЕнд Суб

Проверите да ли ћелија садржи одређени текст

Функција Инстр тестира да ли се низ текста налази у другом низу. Користите га са наредбом Иф да бисте проверили да ли ћелија садржи одређени текст:
123 Ако је Инстр (Опсег ("А2"). Вредност, "текст")> 0 ЗатимСМС порука „Текст је пронађен“Крај Ако

Проверите да ли ћелија садржи текст

Овај код ће тестирати да ли је ћелија текстуална:
1234567 Суб Иф_Целл_Ис_Тект ()Ако Апплицатион.ВорксхеетФунцтион.ИсТект (Опсег ("а2"). Вредност) ЗатимМсгБок "Ћелија је текст"Крај АкоЕнд Суб

Ако идете

Резултат наредбе Иф можете користити за „Иди на“ други одељак кода.
12345678910 Суб ИфГоТо ()Ако је ИсЕррор (Целл.валуе) ТадаИди на ПрескочиКрај Ако'Неки кодПрескочи:Енд Суб

Избриши ред ако је ћелија празна

Помоћу Ифс и петљи можете тестирати је ли ћелија празна и ако је тако избрисати цијели ред.
123456789 Суб ДелетеРовИфЦеллБланк ()Дим Целл Ас РангеЗа сваку ћелију у домету ("А2: А10")Иф Целл.Валуе = "" Онда Целл.ЕнтиреРов.ДелетеСледећа ћелијаЕнд Суб

Ако МессагеБок Да / Не

Са ВБА оквирима за поруке можете затражити од корисника да изабере између неколико опција. Оквир за поруку Да / Не тражи од корисника да одабере Да или Не. Можете додати Да / Не оквир за поруке у процедуру да бисте питали корисника да ли жели да настави са покретањем процедуре или не. Руковањем корисничким уносом користите наредбу Иф.Ево оквира за поруке са да/не у пракси:
123456789101112 Суб МсгБокВариабле ()Затамњен одговор Као цео бројансвер = МсгБок ("Желите ли да наставите?", вбКуестион + вбДаНе)Ако је одговор = вбДаМсгБок "Да"ИначеМсгБок "Не"Крај АкоЕнд Суб

ВБА Иф, ЕлсеИф, Елсе ин Аццесс ВБА

Функције Иф, ЕлсеИф и Елсе раде потпуно исто у Аццесс ВБА као и у Екцел ВБА.

Можете да користите наредбу Иф да проверите да ли у скупу записа постоје записи.

wave wave wave wave wave