Овај водич ће вам показати како да користите угнежђене наредбе Иф у ВБА
Ако вам изрази дозвољавају да тестирате један услов у ВБА да бисте видели да ли је услов Тачан или Нетачан, и у зависности од одговора, код ће се померити у правцу истинитог или лажног исказа.
Јединствени ИФ исказ
1234567891011 | Суб ТестИфДим к као Интегерк = 10Ако је к = 10 тада'ако је к 10, услов је тачанМсгБок к је 10 "Иначе'ако к није 10, услов је нетачанПорука „к није 10“Крај АкоЕнд Суб |
Објашњени угнежђени ИФ -ови
Угњежђени Иф вам омогућава да поставите више услова ИНСИДЕ у сваки од тачних и/или лажних исказа оригиналног Иф.
1234567891011121314151617181920212223242526 | Суб ТестНстедИф ()Дим к као ИнтегерДим и као ИнтегерДим з као Интегерк = 10и = 9з = 8Ако је к = 10 тада'ако је к 10, услов је тачан, па тестирајте за иАко је и = 8 тадаМсгБок "и је 9"Иначе'ако и није 10, услов је лажанПорука „и није 9“Крај АкоИначе'ако к није 10 онда је услов нетачан, па хајде' тестирамо зАко је з = 8, ондаМсгБок "з је 8"Иначе'ако з није 8, услов је нетачанПорука за поруке "з није 10"Крај Ако'још један крај Ако је потребно за затварање оригинала акоКрај АкоЕнд Суб |
Увлачење кода када га пишете увек је добра пракса јер чини код лаким за читање и праћење када морате да му се вратите у некој фази, или када други програмер мора да га прочита.
Такође бисмо могли креирати функцију коју је дизајнирао корисник (УДФ) и позвати вредности неких ћелија из програма Екцел у функцију помоћу параметара.
1234567891011121314151617181920 | Функција ГетИф (к као Интегер, и као Интегер, з као Интегер) као СтрингАко је к = 10 тада'ако је к 10, услов је тачан, па тестирајте за иАко је и = 8 тадаГетИф = "и је 9"Иначе'ако и није 10, услов је лажанГетИф = "и није 9"Крај АкоИначе'ако к није 10 онда је услов нетачан, па хајде' тестирамо зАко је з = 8 тадаГетИф = "з је 8"Иначе'ако з није 8, услов је нетачанГетИф = "з није 10"Крај Ако'још један крај Ако је потребно за затварање оригинала акоКрај АкоЗавршна функција |
Пример угнежђен ако је практичан
Размотрите следећу функцију:
12345678910111213141516171819202122 | Функција ГетДисцоунт (дблПрице Ас Доубле) Као ДоублеАко је дблЦена> = 1000 Тада'ако је цена већа од 1000, доделите попустАко је дблПрице> = 2000 Тада'ако је већи од 2000, дајте 10% попустаГетДисцоунт = дблПрице * 0.1Иначе'У супротном дајте 5% попустаГетДисцоунт = дблПрице * 0.05Крај Ако'ако цена није већа од 1000Иначе'ако је већи од 500, дајте 2,5% попустаАко је дблЦена> = 500 ТадаГетДисцоунт = дблПрице * 0.025Иначе'иначе нема попустаГетДисцоунт = 0Крај Ако'још један крај Ако је потребно за затварање оригинала акоКрај АкоЗавршна функција |
Користећи ову функцију у Екцел листу, можемо тестирати да видимо укупну цену наруџбе и применити различите попусте у зависности од тог збира.
ВБА програмирање | Генератор кода ради за вас!
Користећи ЕлсеИф
ЕлсеИф нам омогућава да поједноставимо ваш код јер је прешао на другу наредбу иф само ако прва враћа вредност фалсе.
12345678910111213141516 | Функција ГетДисцоунт (дблПрице Ас Доубле) Ас Доубле'користите елсе ако смањите писање кодаАко је дблЦена> = 2000 ТадаГетДисцоунт = дблПрице * 0.1Остало ако је дблПрице> = 1000 ТадаГетДисцоунт = дблПрице * 0.075Остало ако је дблПрице> = 500 ТадаГетДисцоунт = дблПрице * 0.05Остало ако је дблПрице> = 200 ТадаГетДисцоунт = дблПрице * 0.025Остало ако је дблПрице> = 100 ТадаГетДисцоунт = дблПрице * 0,01ИначеГетДисцоунт = 0Крај АкоЗавршна функција |
Коришћење изјаве случаја
Такође можемо користити изјаву случаја да постигнемо исти ефекат.
1234567891011121314151617 | Функција ГетДисцоунт (дблПрице Ас Доубле) Ас ДоублеОдаберите Цасе дблПрице„Ова изјава случаја има 6 различитих нивоа попустаСлучај је> = 2000ГетДисцоунт = дблПрице * 0.1Случај је> = 1000ГетДисцоунт = дблПрице * 0.075Случај је> = 500ГетДисцоунт = дблПрице * 0.05Случај је> = 200ГетДисцоунт = дблПрице * 0.025Случај је> = 100ГетДисцоунт = дблПрице * 0,01Цасе ЕлсеГетДисцоунт = 0Крај ИзаберитеЗавршна функција |