ВБА ИИФ функција

Овај водич ће објаснити како се користи ИИФ у ВБА

ВБА ИИФ функција је слична употреби ИФ функције у Екцелу. Тестира се да ли је услов испуњен, враћа једну вредност (или прорачун) ако је ТРУЕ, другу вредност (или прорачун) ако је ФАЛСЕ.

Сличан је ВБА Иф изјави, многи сматрају да је то пречица до коришћења ове методе јер вам је потребно само да напишете један ред кода да бисте добили жељени резултат, уместо да користите Ако… Онда… У супротном… Прекините Ако рутина. Међутим, потребно га је правилно користити јер може довести до проблема у вашем коду.

ИИФ Синтакса

ИФФ функција се састоји од 3 дела - логичког теста, истинитог и лажног дела.

  • Израз:Логички тест који ће се десити.
  • Прави део: Резултат који ће бити враћен ако је логички тест ТРУЕ.
  • Лажни део: Резултат који ће бити враћен ако је логички тест ФАЛСЕ.

Писање поступка ИИФ функције

123 Функција ГетНамес (стрНаме Ас Стринг) Ас СтрингГетНамес = ИИф (стрНаме = "Јохн", "Тхе наме ис Јохн", "Наме ис нот Јохн")Завршна функција

У горњој функцији можемо користити подпроцедуру за тестирање да видимо да ли је променљива коју прослеђујемо функцији стринг „Јохн“

123 Суб ТестГетНамаес ()МсгБок ГетНамес ("Јохн")Енд Суб

Ако бисмо покренули под-процедуру ТестГетНамес, позвала би функцију ГетНамес и вратила оквир за поруку.

Да смо уместо тога користили метод Иф, код би изгледао овако:

1234567 Функција ГетНамес (стрНаме Ас Стринг) Ас СтрингАко (стрНаме = "Јохн") ТадаГетНамес = "Име је Јохн"ИначеГетНамес = "Име није Јохн"Крај АкоЗавршна функција

Успешно смо написали један ред кода уместо 5 редова кода - импресивно!

Зашто користити Иф Иф?

Узмите у обзир следеће

123 Функција ГетНамес (стрНаме Ас Стринг) Ас СтрингГетНамес = ИИф (стрНаме = "Јохн", МсгБок ("Име је Јован"), МсгБок ("Име није Јохн"))Завршна функција

Сада, ако покренете следећу потпроцедуру да позовете своју функцију

123 Под ТестГетНамес ()ГетНамес ("Јохн")Енд Суб

Добили бисте исти оквир за поруке као и раније, али бисте одмах након тога добили следећи оквир за поруку!

ИИФ функција извршава и ТРУЕ и ФАЛСЕ делове реда кода - не напушта код када утврди да је услов тачан - и даље извршава лажни одељак - дајући нам лажну поруку у друго поље за поруку. Да сте користилиАко… Онда… У супротном… Прекините Ако - ово се не би догодило - функција ИФ извршава само део ТРУЕ или ФАЛСЕ кода - у зависности од логике која се преноси коду.

Код је лоше дизајниран (намерно!) Са оквирима за поруке који се држе унутар линије кода на којој се налази ИИФ израз, а не после кода или у потпрограму. Како ИИФ функција покреће и ТРУЕ и ФАЛСЕ секције израза, обе поруке се враћају.

Ову грешку бисмо могли да исправимо померањем оквира за поруку испод линије ИИФ функције, као у доњем коду, или премештањем оквира за поруку у потпроцедуру према првом примеру у овом чланку.

1234 Функција ГетНамес (стрНаме Ас Стринг) Ас СтрингГетНамес = ИИф (стрНаме = "Јохн", "Тхе наме ис Јохн", "Наме ис нот Јохн")МсгБок (ГетНамес)Завршна функција

Ако сте пажљиви при писању кода, функција ИИФ вам може уштедети много редова кода и додатно куцање!

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

Функцију ИИФ можемо угнездити на сличан начин као и функцију ИФ, али још једном се све ради у једној линији.

123 Функција ГетДисцоунт (дблПрице Ас Доубле) Ас ДоублеГетДисцоунт = ИИф (дблПрице> = 500, 10, ИИф (дблПрице> = 250, 5, ИИф (дблПрице> = 100, 2.5, 0)))Завршна функција

Могли бисмо тада позвати ову функцију из потпроцедуре

12345 Суб ФиндДисцоунт ()Дим дблП Ас ДоубледблП = 899МсгБок ("Попуст који можете остварити је" & ГетДисцоунт (дблП) & "%")Енд Суб

или га можете позвати из програма Екцел, користећи га као УДФ (Кориснички дефинисана функција)

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

wave wave wave wave wave