If … Then в VBA – це оператор умовного переходу, за допомогою якого можна змінювати послідовність виконання програми, виходячи з результатів дотримання деяких умов.
Тобто, при обчисленні якоїсь умови, якщо вона виконується, буде отримано результат (значення) True і як наслідок, програма приступить до виконання блоку операторів, які задані в If…Then.
Якщо ж, при обчисленні, умова не виконується, то буде отримано результат (значення) False і оператор If…Then нічого не робитиме.
Зміст уроку
Синтаксис If…Then в VBA
Варіант 1. Однорядковий
If (умовний вираз) Then (оператори, які будуть виконуватися за умови виконання умови)
Варіант 2. Багаторядковий
If (умова) Then
(оператори)
End If
Перший (однорядковий) варіант застосовується в тому випадку, якщо в операторі If…Then виконується лише один оператор.
Приклад однорядкового оператора If…Then
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge < 18 Then MsgBox "Ви ще неповнолітній (неповнолітня)"
End Sub
В цьому прикладі весь наш код розміщений в одному рядку і оператор тут тільки один.
Другий (багаторядковий) варіант застосовується в тому випадку, якщо потрібно виконати не один оператор, а цілий блок операторів які послідовно йдуть один за одним.
В такому випадку, умова, що перевіряється, і виконувані оператори записуються в окремих рядках.
Якщо результат умовного виразу True, то програма почне виконувати групу операторів послідовно, починаючи з того оператора, який вказано після ключового слова Then і закінчуючи оператором завершення End If.
Приклад багаторядкового оператора If…Then
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge < 18 Then
MsgBox "Ви ще неповнолітній (неповнолітня)"
MsgBox "Приходьте коли вам виповниться 18 років"
End If
MsgBox "Це повідомлення користувач побачить незалежно від того, який вік він вказав"
End Sub
У цьому прикладі користувач побачить вікно з проханням ввести свій вік. Якщо вік менше 18 років, то результат умовного виразу буде True, і тому програма почне послідовно виконувати оператори, вказані після ключового слова Then. Тобто спочатку користувач побачить повідомлення "Ви ще неповнолітній (неповнолітня)", потім "Приходьте, коли вам виповниться 18 років", а після цього програма продовжить послідовне виконання коду, і користувач побачить ще й повідомлення "Це повідомлення користувач побачити незалежно від того, який вік він вказав".
Якщо ж користувач введе вік більше 18 років, то результат умовного виразу буде False. Тому програма пропустить все, що знаходиться між Then і End If (включно), і продовжить своє виконання з оператора, який слідує відразу після End If. Тобто користувач побачить лише повідомлення "Це повідомлення користувач побачить незалежно від того, який вік він вказав".
Варіації If...Then...Else та If...Elself
Умовний оператор If...Then має варіації:
- If...Then...Else
- If...Elself
Так само як If…Then, вони можуть бути записані в один або кілька рядків.
Принцип запису коду той самий - якщо виконується лише один оператор, то можна записати код в один рядок і не використовувати ключове слово End If. Якщо ж потрібно послідовно виконати блок операторів, то в такому разі умовний вираз і оператори, що виконуються, записуються в різних рядках.
Синтаксис If…Then…Else в VBA
If (умовний вираз) Then
(оператори, які будуть виконуватися, якщо результат умовного виразу = True)
Else
(оператори, які будуть виконуватися, якщо результат умовного виразу = False)
End If
Приклад
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge < 18 Then
MsgBox "Ви ще неповнолітній (неповнолітня)"
MsgBox "Бажаєте спробувати ще?"
Else
MsgBox "Добре що вам вже є 18 років"
End If
MsgBox "Це повідомлення користувач побачить незалежно від того, який вік він вказав."
End Sub
В даному прикладі, після того, як користувач вводить свій вік, відбувається перевірка. В результаті, якщо користувач ввів цифру менше 18, то будуть виведені повідомлення "Ви ще неповнолітня (неповнолітня)", "Бажаєте спробувати ще?" і "Це повідомлення користувач побачить незалежно від того, який вік він вказав." (Останнє повідомлення виводиться незалежно від того, який у користувача вік. Воно поза умовним виразом).
Якщо користувач ввів цифру 18 (або більше), то буде виведено повідомлення "Добре, що вам вже є 18 років" і "Це повідомлення користувач побачити незалежно від того, який вік він вказав."
Синтаксис If…Then…ElseIf в VBA
If (умовний вираз 1) Then
(оператори, які будуть виконуватися, якщо результат першого умовного виразу = True)
ElseIf (умовний вираз 2) Then
(оператори, які будуть виконуватися, якщо результат першого умовного виразу = True)
ElseIf (умовний вираз 3) Then
(оператори, які будуть виконуватися, якщо результат першого умовного виразу = True)
Else ‘Це необов'язковий елемент конструкції
(оператори, які будуть виконуватись, якщо результат усіх вищевказаних умовних виразів = False)
End If
Приклад
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge <= 6 Then
MsgBox "Ви дошкільня"
ElseIf userAge <= 17 Then
MsgBox "Ви школяр"
ElseIf userAge <= 23 Then
MsgBox "Ви студент"
ElseIf userAge <= 55 Then
MsgBox "Ви спеціаліст"
End If
End Sub
У даному прикладі послідовно виконується перевірка умов. Якщо перша умова True, тобто користувач ввів вік менше 6 років, виконується перший блок операторів (виводиться повідомлення "Ви дошкільня"). Якщо перша умова False (введений вік більше 6), то програма переходить до обчислення другої умови. І так до останньої умови, поки не буде отримано результат True. Якщо ж у жодному умовному виразі не буде значення True, то програма нічого не робитиме (ніяких повідомлень не буде).
Приклад
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge = 6 Then
MsgBox "Вам 6 років"
ElseIf userAge = 17 Then
MsgBox "Вам 17 років"
ElseIf userAge = 23 Then
MsgBox "Вам 23 роки"
ElseIf userAge = 55 Then
MsgBox "Вам 55 років"
End If
End Sub
У цьому прикладі здійснюється перевірка на рівність. І якщо користувач введе 6, 17, 23 або 55, то програма буде виконувати відповідний блок операторів.
Якщо ж користувач введе якісь інші цифри, то результат обчислення всіх умов буде False і програма нічого не робитиме (ніяких повідомлень користувач більше не побачить).
Вкладені оператори If…Then
Іноді, при написанні програм, для того щоб виконати якусь дію, виникає необхідність перевірити не одну, а кілька умов. У такому випадку можна розмістити (вкласти) один оператор If…Then всередині іншого.
Така дія називається вкладенням операторів.
Принцип дії вкладених операторів, наступний:
- Якщо значення першої умови True, програма переходить до наступної перевірки (виконується вкладена умова).
- Якщо значення першої умови False, то програма не буде виконувати вкладені оператори, а перейде до виконання тих операторів, які йдуть після ключового слова Else.
Приклад вкладення операторів If…Then
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge > 0 Then
If userAge <= 17 Then
MsgBox "Вам від 1 до 17 років"
End If
Else
MsgBox "Вам більше 17 років"
End If
End Sub
Примітка.
Використовувати вкладені оператори можна, але не рекомендується. Краще використовувати конструкцію If…Then…ElseIf, яка є еквівалентною вкладенню операторів If…Then.