Цей підручник покаже вам, як використовувати вкладені оператори If у VBA
Якщо оператори дозволяють вам перевірити одну умову у VBA, щоб побачити, чи є умова істинною чи хибною, і залежно від відповіді, код рухатиметься у напрямку справжнього або хибного висловлювання.
Єдиний оператор IF
1234567891011 | Підтест ЯкщоDim x як ціле числоx = 10Якщо х = 10, то'якщо x дорівнює 10, умова істиннаMsgBox x - 10 дюймівІнакше'якщо x не дорівнює 10, умова не відповідає дійсностіПовідомлення "x не 10"Закінчити ЯкщоEnd Sub |
Пояснено вкладені IF
Вкладений If дозволяє вам поставити кілька умов INSIDE до кожного з тверджень True та/або False вихідного If.
1234567891011121314151617181920212223242526 | Sub TestNstedIf ()Dim x як ціле числоDim y як IntegerDim z як ціле числоx = 10y = 9z = 8Якщо х = 10, то'якщо x дорівнює 10, умова відповідає дійсності, тому перевірте для yЯкщо у = 8, тоMsgBox "y дорівнює 9"Інакше'якщо y не 10, умова не відповідає дійсностіПовідомлення "y не 9"Закінчити ЯкщоІнакше'якщо x не 10, то умова не відповідає дійсності, тому давайте' перевіримо zЯкщо z = 8, тоMsgBox "z є 8"Інакше'якщо z не 8, умова хибнаПовідомлення "z не 10"Закінчити Якщо'інший End If необхідний для закриття оригіналу ifЗакінчити ЯкщоEnd Sub |
Відступи від коду під час його написання - це завжди гарна практика, оскільки це полегшує читання коду та його виконання, коли вам доводиться повертатися до нього на певному етапі, або коли інший програміст має його прочитати.
Ми також можемо створити призначену користувачем функцію (UDF) і викликати значення деяких клітинок з Excel у функцію за допомогою параметрів.
1234567891011121314151617181920 | Функція GetIf (x як Integer, y як Integer, z як Integer) як StringЯкщо х = 10, то'якщо x дорівнює 10, умова відповідає дійсності, тому перевірте для yЯкщо у = 8, тоGetIf = "y дорівнює 9"Інакше'якщо y не 10, умова не відповідає дійсностіGetIf = "y не 9"Закінчити ЯкщоІнакше'якщо x не 10, то умова не відповідає дійсності, тому давайте' перевіримо zЯкщо z = 8, тоGetIf = "z дорівнює 8"Інакше'якщо z не 8, умова хибнаGetIf = "z не 10"Закінчити Якщо'інший End If необхідний для закриття оригіналу ifЗакінчити ЯкщоФункція завершення |
Вкладений, якщо практичний приклад
Розглянемо таку функцію:
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Закінчити Якщо'інший End If необхідний для закриття оригіналу ifЗакінчити ЯкщоФункція завершення |
За допомогою цієї функції на аркуші Excel ми можемо перевірити, щоб побачити загальну ціну замовлення, і застосувати різні знижки залежно від цієї суми.
Програмування VBA | Генератор коду працює для вас!
Використання 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Закінчити ЯкщоФункція завершення |
Використання заяви про випадок
Для досягнення такого ж ефекту ми також можемо використовувати випадок випадку.
1234567891011121314151617 | Функція GetDiscount (dblPrice As Double) як DoubleВиберіть Справа dblPrice«Ця заява про випадок має 6 різних рівнів знижокВипадок>> 2000GetDiscount = dblPrice * 0,1Випадок> = 1000GetDiscount = dblPrice * 0,075Випадок> = 500GetDiscount = dblPrice * 0,05Випадок> = 200GetDiscount = dblPrice * 0,025Випадок> = 100GetDiscount = dblPrice * 0,01Справа в іншомуGetDiscount = 0Кінець ВиберітьФункція завершення |