Заява VBA If

Якщо тоді
VBA Якщо оператори дозволяють вам перевірити, чи є вирази TRUE або FALSE, виконуючи інший код на основі результатів.Давайте розглянемо простий приклад:
1 | Якщо Range ("a2"). Значення> 0 Тоді Range ("b2"). Value = "Positive" |
Це перевіряє, чи значення діапазону A2 більше 0. Якщо так, встановіть діапазон B2 рівним «Позитивний»

Примітка: Під час перевірки умов ми будемо використовувати оператори порівняння =,>, <,, =. Детальніше ми обговоримо їх далі в статті.Ось синтаксис простого однорядкового оператора If:
1 | Якщо [вираз_випробування], то [дія] |
Щоб полегшити читання, ви можете використовувати символ продовження рядка (підкреслення), щоб розгорнути оператори If до двох рядків (як ми зробили на малюнку вище):
12 | Якщо [вираз_випробування], то _[дія] |
12 | Якщо Діапазон ("a2"). Значення> 0 Тоді _Діапазон ("b2"). Значення = "Позитивне" |
Закінчити Якщо
Наведений вище "однорядковий" оператор if добре працює, коли ви перевіряєте одну умову. Але оскільки ваші оператори IF стають складнішими за кількох умов, вам потрібно буде додати до кінця оператора if «Закінчити якщо»:
123 | Якщо діапазон ("a2"). Значення> 0 ТодіДіапазон ("b2"). Значення = "Позитивне"Закінчити Якщо |
Ось такий синтаксис:
123 | Якщо [test_expression], то[дія]Закінчити Якщо |
Кінець If означає кінець оператора if.
Тепер додамо ElseIF:
ElseIF - Кілька умов
ElseIf додається до існуючого оператора If. Інакше перевіряє, чи відповідає умова
ТІЛЬКИ якщо попередні умови не були виконані.У попередньому прикладі ми перевірили, чи значення клітинки є позитивним. Тепер ми також перевіримо, чи значення клітинки від'ємне за допомогою ElseIf:
12345 | Якщо діапазон ("a2"). Значення> 0 ТодіДіапазон ("b2"). Значення = "Позитивне"Діапазон ElseIf ("a2"). Значення <0 ТодіДіапазон ("b2"). Значення = "Негативне"Закінчити Якщо |

Ви можете використовувати кілька ElseIfs для перевірки кількох умов:
1234567891011 | Sub If_Multiple_Conditions ()Якщо Range ("a2"). Value = "Cat" ТодіДіапазон ("b2"). Значення = "нявкання"ElseIf Range ("a2"). Value = "Dog" ТодіДіапазон ("b2"). Значення = "Woof"ElseIf Range ("a2"). Value = "Duck" ТодіДіапазон ("b2"). Значення = "шарлатанство"Закінчити ЯкщоEnd Sub |

Тепер ми додамо Інакше:
Інакше
The Інакше буде працювати, якщо інші попередні умови не були виконані.
Ми завершимо наш приклад, використовуючи Else, щоб вказати, що якщо значення комірки не є позитивним чи негативним, воно має бути нульовим:
1234567 | Якщо діапазон ("a2"). Значення> 0 ТодіДіапазон ("b2"). Значення = "Позитивне"Діапазон ElseIf ("a2"). Значення <0 ТодіДіапазон ("b2"). Значення = "Негативне"ІнакшеДіапазон ("b2"). Значення = "Нуль"Закінчити Якщо |
Якщо-інше
Найпоширеніший тип оператора If-простий If-Else:
1234567 | Sub If_Else ()Якщо діапазон ("a2"). Значення> 0 ТодіДіапазон ("b2"). Значення = "Позитивне"ІнакшеДіапазон ("b2"). Значення = "Не позитивне"Закінчити ЯкщоEnd Sub |

Вкладені IF
Ви також можете "вкласти", якщо оператори всередині один одного.
1234567891011 | Вкладений_Ifs ()Якщо діапазон ("a2"). Значення> 0 ТодіДіапазон ("b2"). Значення = "Позитивне"ІнакшеЯкщо діапазон ("a2"). Значення <0 ТодіДіапазон ("b2"). Значення = "Негативне"ІнакшеДіапазон ("b2"). Значення = "Нуль"Закінчити ЯкщоЗакінчити ЯкщоEnd Sub |

ЯКЩО - Або, І, Xor, Ні
Далі ми обговоримо логічні оператори: Or, And, Xor, Not.
Якщо Or
The Або перевірка оператором, якщо принаймні одна умова виконується.
Наступний код перевірить, чи значення в діапазоні A2 менше 5000 або більше 10000:
123 | Якщо діапазон ("a2"). Значення 10000 ТодіДіапазон ("b2"). Значення = "Поза діапазоном"Закінчити Якщо |

Ви можете включити кілька рядків Ors в один рядок:
123 | Якщо Range ("a2"). Значення 10000 або Range ("a2"). Value = 9999 ТодіДіапазон ("b2"). Значення = "Поза діапазоном"Закінчити Якщо |
Якщо ви збираєтеся використовувати кілька символів Ors, рекомендується використовувати символ продовження рядка, щоб полегшити читання коду:
123456 | Якщо діапазон ("a2"). Значення <5000 Або _Діапазон ("a2"). Значення> 10000 Або _Діапазон ("a2"). Значення = 9999 ТодіДіапазон ("b2"). Значення = "Поза діапазоном"Закінчити Якщо |

Якщо І
Оператор And дозволяє перевірити, якщо ВСІ умови виконані.
123 | Якщо Діапазон ("a2"). Значення> = 5000 І Діапазон ("a2"). Значення <= 10000 ТодіДіапазон ("b2"). Значення = "У діапазоні"Закінчити Якщо |

Якщо Xor
Оператор Xor дозволяє перевірити, якщо виконується точно одна умова. Якщо нульові умови виконуються, Xor поверне значення FALSE, якщо виконано дві або більше умов, Xor також поверне false.
Я рідко бачив Xor у програмуванні VBA.
Якщо ні
Оператор Not використовується для перетворення FALSE на TRUE або TRUE на FALSE:
123 | Sub IF_Not ()MsgBox Not (True)End Sub |
Зверніть увагу, що оператор Not вимагає дужок, що оточують вираз для перемикання.
Оператор Not також може бути застосований до операторів If:
123 | Якщо ні (Діапазон ("a2"). Значення> = 5000 І Діапазон ("a2"). Значення <= 10000) ТодіДіапазон ("b2"). Значення = "Поза діапазоном"Закінчити Якщо |

Якщо порівняння
Здійснюючи порівняння, ви зазвичай використовуєте один із операторів порівняння:
Оператор порівняння | Пояснення |
= | Дорівнює |
| Не дорівнює |
> | Більше ніж |
>= | Більше або дорівнює |
< | Менше ніж |
<= | Менше або дорівнює |
Однак ви також можете використовувати будь -який вираз або функція що призводить до ІСТИНИ або ХІБИ
Якщо - булева функція
При складанні виразів для операторів If ви також можете використовувати будь -яку функцію, яка породжує значення TRUE або False. VBA має кілька таких функцій:
Функція | Опис |
IsDate | Повертає TRUE, якщо вираз є дійсною датою |
Пусто | Перевірте наявність порожніх клітинок або невизначених змінних |
IsError | Перевірте значення помилок |
IsNull | Перевірте значення NULL |
IsNumeric | Перевірте числове значення |
Їх можна назвати так:
1 | Якщо IsEmpty (Діапазон ("A1"). Значення), то MsgBox "Осередок порожній" |
Excel також має багато додаткових функцій, які можна викликати за допомогою WorksheetFunction. Ось приклад функції Excel IsText:
12 | Якщо Application.WorksheetFunction.IsText (Діапазон ("a2"). Значення) Тоді _MsgBox "Клітинка - це текст" |
Ви також можете створити власні користувальницькі функції (UDF). Нижче ми створимо просту булеву функцію, яка повертає TRUE. Тоді ми викличемо цю функцію у нашому операторі If:
1234567891011 | Sub If_Function ()Якщо TrueFunction ТоПовідомлення "True"Закінчити ЯкщоEnd SubФункція TrueFunction () Як булеваTrueFunction = ПравдаФункція завершення |

Порівняння тексту
Ви також можете порівняти текст, подібний до порівняння чисел:
Порівнюючи текст, слід пам’ятати про «регістр» (верхній або нижній). За замовчуванням VBA вважає букви з різними регістрами невідповідними. Іншими словами, "А" "а".Якщо ви хочете, щоб VBA ігнорувала регістр, ви повинні додати оголошення Option Compare Text у верхній частині свого модуля:
Після подання такої декларації «А» = «а»:
12345 | Опція Порівняти текстSub If_Text ()MsgBox "a" = "A"End Sub |
VBA, якщо подобається
Оператор VBA Like Operator дозволяє робити неточні порівняння тексту. Натисніть посилання «Подобається оператору», щоб дізнатися більше, але нижче ми покажемо базовий приклад:
12345678 | Dim strName як StringstrName = "Містер Чарльз"Якщо strName як "Mr*" ТодіПовідомлення "True"ІнакшеПовідомлення "Неправда"Закінчити Якщо |
Тут ми використовуємо підстановку зірочки "*". Знак * означає будь -яку кількість будь -яких символів. Отже, вищезазначений оператор If поверне TRUE. Оператор Like-надзвичайно потужний, але часто недостатньо використовуваний інструмент для роботи з текстом.
Якщо цикли
Цикли VBA дозволяють повторювати дії. Поєднання IF-ELSE з циклами-це чудовий спосіб швидко обробити багато обчислень.
Продовжуючи наш позитивний / негативний приклад, ми додамо For Every Loop, щоб прокрутити діапазон клітинок:
1234567891011121314 | Sub If_Loop ()Яскрава клітина як діапазонДля кожної клітини в діапазоні ("A2: A6")Якщо Cell.Value> 0 ТодіCell.Offset (0, 1) .Value = "Позитивний"ElseIf Cell.Value <0 ТодіCell.Offset (0, 1) .Value = "Негативний"ІнакшеCell.Offset (0, 1) .Value = "Нуль"Закінчити ЯкщоНаступна клітинаEnd Sub |
Якщо інші приклади
Тепер ми розглянемо ще деякі конкретні приклади.
Перевірте, чи клітинка порожня
Цей код перевірить, чи порожня клітинка. Якщо він порожній, він ігнорує клітинку. Якщо він не порожній, він виведе значення клітинки у комірку праворуч:
1234567 | Sub If_Cell_Empty ()Якщо Діапазон ("a2"). Значення "" ТодіДіапазон ("b2"). Значення = Діапазон ("a2"). ЗначенняЗакінчити ЯкщоEnd Sub |
Перевірте, чи містить комірка певний текст
Функція Instr перевіряє, чи рядок тексту знайдено в іншому рядку. Використовуйте його з оператором If, щоб перевірити, чи містить клітинка певний текст:
123 | Якщо Instr (Діапазон ("A2"). Значення, "текст")> 0 ТодіПовідомлення "Текст знайдено"Закінчити Якщо |
Перевірте, чи містить клітинка текст
Цей код перевірить, чи є клітинка текстовою:
1234567 | Sub If_Cell_Is_Text ()Якщо Application.WorksheetFunction.IsText (Діапазон ("a2"). Значення) ТодіMsgBox "Клітинка - це текст"Закінчити ЯкщоEnd Sub |
Якщо перейти
Ви можете використовувати результат оператора If, щоб "перейти" до іншого розділу коду.
12345678910 | Sub IfGoTo ()Якщо IsError (Cell.value) ТодіПерейти до пропускуЗакінчити Якщо"Якийсь кодексПропустити:End Sub |
Видалити рядок, якщо комірка порожня
Використовуючи Ifs і цикли, ви можете перевірити, чи порожня комірка, і в такому разі видалити весь рядок.
123456789 | Sub DeleteRowIfCellBlank ()Dim Cell As RangeДля кожної клітини в діапазоні ("A2: A10")Якщо Cell.Value = "" Тоді Cell.EntireRow.DeleteНаступна клітинаEnd Sub |
Якщо MessageBox Так / Ні
За допомогою скриньки повідомлень VBA ви можете попросити користувача вибрати один з декількох варіантів. Вікно повідомлень Так / Ні просить користувача вибрати Так або Ні. Ви можете додати вікно повідомлень Так / Ні до процедури, щоб запитати користувача, чи хотіли б вони продовжувати виконувати процедуру чи ні. Ви обробляєте введення користувача за допомогою оператора If.Ось на практиці вікно повідомлень так/ні:
123456789101112 | Sub MsgBoxVariable ()Нечітка відповідь Як ціле числоanswer = MsgBox ("Хочете продовжити?", vbQuestion + vbТак)Якщо відповідь = vbТакПовідомлення "Так"ІнакшеПовідомлення "Ні"Закінчити ЯкщоEnd Sub |
VBA If, ElseIf, Else in Access VBA
Функції If, ElseIf та Else працюють точно так само в Access VBA, як і в Excel VBA.
Ви можете використовувати оператор If, щоб перевірити, чи є записи в наборі записів.
