VBA If, ElseIf, Else (Кінцевий посібник із тверджень If)

Заява 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 = ПравдаФункція завершення

Порівняння тексту

Ви також можете порівняти текст, подібний до порівняння чисел:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Порівнюючи текст, слід пам’ятати про «регістр» (верхній або нижній). За замовчуванням VBA вважає букви з різними регістрами невідповідними. Іншими словами, "А" "а".Якщо ви хочете, щоб VBA ігнорувала регістр, ви повинні додати оголошення Option Compare Text у верхній частині свого модуля:
1 Опція Порівняти текст

Після подання такої декларації «А» = «а»:
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, щоб перевірити, чи є записи в наборі записів.

wave wave wave wave wave