Този урок ще ви покаже как да използвате вложени оператори If във VBA
Ако операторите ви позволяват да тествате за едно условие във VBA, за да видите дали условието е True или False, и в зависимост от отговора, кодът ще се движи в посока на истинското изявление или невярно изявление.
Единично изявление на IF
1234567891011 | Подтест АкоDim x като Integerx = 10Ако x = 10 тогава„ако x е 10, условието е вярноMsgBox x е 10 "Иначе'ако x не е 10, условието е невярноMsgbox "x не е 10"Край АкоEnd Sub |
Обяснени вложени IF
Вложено If ви позволява да поставите множество условия ВЪВ ВСЕКИ всеки от верните и/или неверните изявления на оригиналния If.
1234567891011121314151617181920212223242526 | Sub TestNstedIf ()Dim x като IntegerЗатъмнете като цяло числоDim z като цяло числоx = 10y = 9z = 8Ако x = 10 тогава'ако x е 10, условието е вярно, затова проверете за yАко y = 8 тогаваMsgBox "y е 9"Иначе'ако y не е 10, условието е невярноMsgbox "y не е 9"Край АкоИначе'ако x не е 10, тогава условието е невярно, така че нека' проверим за zАко z = 8, тогаваMsgBox "z е 8"Иначе'ако z не е 8, условието е невярноMsgbox "z не е 10"Край Ако„друг край Ако е необходимо за затваряне на оригинала акоКрай АкоEnd Sub |
Отстъпването на кода, когато го пишете, винаги е добра практика, тъй като прави кода лесен за четене и следване, когато трябва да се върнете към него на определен етап или когато друг програмист трябва да го прочете.
Можем също така да създадем потребителска функция (UDF) и да извикаме стойностите на някои клетки от Excel във функцията, използвайки параметри.
1234567891011121314151617181920 | Функция GetIf (x като Integer, y като Integer, z като Integer) като StringАко x = 10 тогава'ако x е 10, условието е вярно, затова проверете за yАко y = 8 тогаваGetIf = "y е 9"Иначе'ако y не е 10, условието е невярноGetIf = "y не е 9"Край АкоИначе„ако x не е 10, тогава условието е невярно, така че нека“ тестваме за zАко z = 8 тогаваGetIf = "z е 8"Иначе'ако z не е 8, условието е невярноGetIf = "z не е 10"Край Ако„друг край Ако е необходимо за затваряне на оригинала акоКрай АкоКрайна функция |
Примерен, ако е практически пример
Помислете за следната функция:
12345678910111213141516171819202122 | Функция GetDiscount (dblPrice As Double) Като DoubleАко dblPrice> = 1000 Тогава„ако цената е по -голяма от 1000, задайте отстъпкаАко dblPrice> = 2000 Тогава„ако е по -голямо от 2000, дайте 10% отстъпкаGetDiscount = dblPrice * 0.1Иначе„в противен случай дайте 5% отстъпкаGetDiscount = dblPrice * 0.05Край Ако„ако цената не е по -голяма от 1000Иначе„ако е по -голямо от 500, дайте 2,5% отстъпкаАко dblPrice> = 500 ТогаваGetDiscount = dblPrice * 0.025Иначе„иначе няма отстъпкаGetDiscount = 0Край Ако„друг край Ако е необходимо за затваряне на оригинала акоКрай АкоКрайна функция |
Използвайки тази функция в лист на Excel, можем да тестваме, за да видим общата цена за поръчка, и да приложим различни отстъпки в зависимост от тази сума.
VBA програмиране | Code Generator работи за вас!
Използване на ElseIf
ElseIf ни позволява да опростим кода ви, тъй като той се придвижва само до втория if израз, ако първият връща false.
12345678910111213141516 | Функция GetDiscount (dblPrice As Double) Като Double'използвайте else, за да намалите писането на кодАко dblPrice> = 2000 ТогаваGetDiscount = dblPrice * 0.1В противен случай, ако dblPrice> = 1000 ТогаваGetDiscount = dblPrice * 0.075В противен случай, ако dblPrice> = 500 ТогаваGetDiscount = dblPrice * 0.05В противен случай, ако dblPrice> = 200 ТогаваGetDiscount = dblPrice * 0.025В противен случай, ако dblPrice> = 100 ТогаваGetDiscount = dblPrice * 0,01ИначеGetDiscount = 0Край АкоКрайна функция |
Използване на изявление по случай
Можем също да използваме Case Statement за постигане на същия ефект.
1234567891011121314151617 | Функция GetDiscount (dblPrice As Double) Като DoubleИзберете Case dblPrice„този отчет има 6 различни нива на отстъпкаСлучаят е> = 2000GetDiscount = dblPrice * 0.1Случаят е> = 1000GetDiscount = dblPrice * 0.075Делото е> = 500GetDiscount = dblPrice * 0.05Случаят е> = 200GetDiscount = dblPrice * 0.025Случаят е> = 100GetDiscount = dblPrice * 0,01Дело иначеGetDiscount = 0Край ИзберетеКрайна функция |