Оператори розгалуження VBA: простий вибір. Методичні вказівки та завдання Vba умовний оператор if

Умови є дуже корисними при програмуванні, оскільки дозволяють нам виконувати дії, залежно від встановлених критеріїв (використовується такий самий принцип як і в IFфункції Excel).

Найбільш важливою функцією, яка задає умову є IFі зараз ми подивимося, як вона працює:

If [УМОВИ ТУТ] Then "=> ЯКЩО умова вірна, ТОДИ "Інструкції, якщо "правда" Else "=> У ПРОТИ ВИПАДКУ "Інструкції, якщо "брехня" End If

Давайте перейдемо до практики та повернемося до прикладу, який ми використали в уроці зі змінними. Мета цієї процедури була в тому, щоб відкрити діалогове вікно, яке містило б значення з рядка, вказаного в осередку F5:

Якщо ви введете букву в комірку F5, це спричинить помилку. Ми хочемо запобігти цьому.

Sub variables () "Декларування змінних Dim last_name As String, first_name As String, age As Integer, row_number As Integer "Присвоєння значень змінним row_number = Range("F5") + 1 last_name = Cells(row_number, 1) fir , 2) age = Cells(row_number, 3) "Діалогове вікно MsgBox last_name & " " & first_name & "," & age & " років" End Sub

Давайте додамо умову, яку перевірятиме - чи є введене значення в осередок F5числом, перед тим, як код буде виконано.

Ми скористаємось функцією IsNumericдля перевірки умови:

Sub variables () "Якщо значення в дужках (комірка F5) є числовим (І ТОМУ УМОВИ IF Є ВІРНИМ) тоді "виконати інструкції, які слідують після THEN If IsNumeric (Range ("F5")) Then "Декларування змінних Dim last_ , first_name As String, age As Integer, row_number As Integer "Присвоєння значень змінним row_number = Range ("F5") + 1 last_name = Cells (row_number, 1) first_name = Cells (row_number, 2) age = Cells (row "Діалогове вікно MsgBox last_name & " " & first_name & "," & age & " років" End If End Sub

Нам також потрібно прописати інструкції, якщо поставлена ​​умова не виконається:

Sub variables () If IsNumeric (Range ("F5")) Then "Якщо умова виконується "Декларування змінних Dim last_name As String, first_name As String, age As Integer, row_number As Integer "Присвоєння значень змінним row_number = Range + 1 last_name = Cells (row_number, 1) first_name = Cells (row_number, 2) age = Cells (row_number, 3) "Діалогове вікно MsgBox last_name & " " & first_name & "," & age & " років" Else "Якщо у не виконується "Діалогове вікно: попередження MsgBox "Введене значення & Range ("F5") & " не є вірним!" "Видалення вмісту клітинки F5 Range ("F5").ClearContents End If End Sub

Тепер нечислове значення не спричинить жодних проблем.

Працюючи з нашим масивом, який містить 16 рядків даних, наш наступний крок буде в перевірці чи є змінна row_number: "більше ніж або дорівнює 2" і "менше ніж або дорівнює 17".

Але спочатку поглянемо на оператори порівняння:

та ці корисні оператори:

Тепер давайте додамо одну з зазначених вище умов ANDміж операторами порівняння:

Sub variables () If IsNumeric (Range ("F5")) Then "Якщо числове значення Dim last_name As String, first_name As String, age As Integer, row_number As Integer row_number = Range ("F5") + 1 If row_number> = 2 And row_number

Якщо ми хочемо зробити наш макрос більш практичним, ми можемо замінити 17 на змінну, яка містила б кількість рядків. Це дозволило б нам додавати і видаляти рядки з масиву без необхідності змінювати цей ліміт кожного разу.

Для того, щоб зробити це, ми маємо створити змінну nb_rowsта додати цю функцію.

У цьому випадку ми використовуємо функцію WorksheetFunction.CountA, яка є аналогом функції COUNTAу самому Excel.

Ми хочемо, щоб ця функція підрахувала кількість непустих осередків у першій колонці по записала отримане значення змінну nb_rows:

Sub variables () If IsNumeric (Range ("F5")) Then "ЯКІ ЧИСЛО Dim last_name As String, first_name As String, age As Integer, row_number As Integer Dim nb_rows As Integer row_number = Range ("F5") = 1 WorksheetFunction.CountA (Range ("A:A")) "Функція підрахунку кількості рядків If row_number > = 2 And row_number

ElseIf

ElseIfдає можливість додавати додаткові умови після IF команди:

If [УМОВИ 1] Then "=> ЯКЩО умова 1 вірно, ТОДИ "Інструкції 1 ElseIf [УМОВИ 2] Then "=> ЯКЩО умова 1 невірна, але умова 2 вірна, ТОДІ "Інструкції 2 Else "=> Інакше "Інструкції If

Якщо УМОВИ 1виконується, Інструкція 1буде виконано та залишить оператор IF(який починається з IFта закінчується End If). Якщо УМОВИ 2набуває значення " брехня ", тоді буде виконана Інструкція 2, і якщо вона своєю чергою повертає " брехня ", тоді Інструкція 3(під Else) буде виконано.

Sub scores_comment () "Змінні Dim note As Integer, score_comment As String note = Range ("A1") "Коментарі, засновані на отриманій оцінці If note = 6 Then score_comment = "Чудовий бал!" ElseIf note = 5 Then score_comment = "Гарний бал" ElseIf note = 4 Then score_comment = "Задовільний бал" ElseIf note = 3 Then score_comment = "Незадовільний бал" ElseIf note = 2 Then score_comment = "Поганий бал" = "Жахливий бал" Else score_comment = "Нульовий бал" End If "Коментар у осередку B1 Range ("B1") = score_comment End Sub

Select

Існує альтернатива використанню Ifз багатьма ElseIfінструкціями, а саме команда Select, яка більше підходить до таких ситуацій.

Розглянемо приклад макросу з оператором Select:

Sub scores_comment () "Змінні Dim note As Integer , score_comment As String note = Range ("A1") "Коментарі на основі отриманої оцінки Select Case note "

Варто зазначити, що ми також могли використовувати інші оператори порівняння:

Case Is > = 6 "якщо значення> = 6

Приклади з різними значеннями:

Case Is = 6, 7 "якщо значення = 6 або 7 Case Is 6, 7 "якщо значення не дорівнює 6 або 7 Case 6 To 10 "якщо значення = будь-якого числа від 6 до 10

The IF function in VBA є одним з найбільш most used of all statements. IF функції checks if the specified condition is being met or not. IF функція в VBA робіт у винятково різних маневрах від того, що ця робота в Excel. В Excel, функції IF вивчають два значення: Це перевірки, якщо відповідні умови оцінюються на TRUE або FALSE і будуть відновлені, щоб використовуватися на основі i.e IF( condition, return_value_if_condition_true, return_value_if_condition_false). However, IF функція в VBA є тільки перша частина, i.e. check if the condition evaluates to TRUE or FALSE. Натисніть на будь-який сценарій, як визначено за допомогою іншого THEN statement.

Using a simple IF функція в VBA

Here’s an example of the IF function. Цей пункт VBA code is simply checking whether condition specified (i.e. 1 > 4) evaluates to TRUE or FALSE. У цьому випадку, будь-який тільки встановлений кроки буде зроблено при умові оцінки до TRUE. У цьому випадку, результат буде бути displayed на екрані. Якщо функція була доведена до FALSE, VBA code will do nothing.

1
2
3
4
5

Sub IF_FUNCTION()
If 7 > 1 Then
MsgBox "7 is greater than 1"
End If
End Sub

The THEN statement is essentially a directive indicating that the steps immediately following it are to be executed if the condition just before if evaluate to TRUE.

IF функція звичайна ланка з END IF declaration which lets the application know that it is the last line of IF function. Given below is a slightly shorter form of the IF function. Зауважте, що END IF statement has been eliminated в this and thus three lines of code has been merged into one.

Sub IF_FUNCTION_SHORT()
If 7 > 1 Then MsgBox "7 is greater than 1"
End Sub

However this form should be used only when there are no ELSE or ELSE IF statements are needed. Let's look at what they are and how they help enhance функцію IF.

Використовуючи IF функцію з ELSE в VBA

У прикладі, що йдеться, ми вважаємо, що функція IF повинна бути здатна до виходу з ладу тільки якщо умова оцінюється в TRUE. Але якщо ви думаєте про те, що кроки будуть здійснені з того, що будь-які умови були met. Один спосіб, щоб досягти того, що функція IF використовується для ELSE statement. Simply put, ELSE statement causa the application to execute the steps mentioned in the ELSE block when the condition specified in the IF clause evaluates to FALSE.

У розділі VBA коду нижче, умови в IF функціях оцінюються false, стилі mentioned в ELSE блоку executed with the result that the message “1 is less than 4” gets displayed on the screen. Multiple steps може бути приєднаний до блоку, щоб мати все execute один після одного.

1
2
3
4
5
6
7

Sub IF_ELSEIF_FUNCTION()
If 1 > 4 Then

Else:
MsgBox "1 is less than 4"
End If
End Sub

За допомогою функції IF з ELSEIF і ELSE: in VBA

ELSE statement може бути підтриманий за ELSEIF statements. Вони є типово використані для перевірки для конкретних умов і якщо всі їх оцінюють до ЗАЛИШЕННЯ, відповідь визначена в ELSE умові буде остаточно прийнятий. The IF statement will check for a given condition. Якщо умови turns out to be FALSE, the condition specified in the first ELSEIF statement will be checked. Якщо вони беруть участь у тому, що умови, визначені в другій частині ELSEIF, буде скасовано, а потім і не тільки. Якщо всі умови встановлені в IF і ELSEIF положеннях спрямовані на FALSE, за винятком кроків mentioned under the final ELSE: block will get executed. Зверніть увагу, що якщо вони є multiple statements ELSEIF, то перші, що оцінюються в TRUE буде отримано і once виконано, код execution буде рухатися до END IF statement. Будь-яка є найбільшою ELSEIF умовами, які оцінюються до TRUE, тільки перші, що оцінюються до TRUE, буде executed.

1
2
3
4
5
6
7
8
9
10
11


If< > Then
MsgBox "1 is greater than 4"
ElseIf< > Then

ElseIf< > Then

Else< >:

End If
End Sub

У тексті показано нижче, IF умова checked first. Since it evaluates to FALSE, the first ELSEIF condition is evaluated, followed by the second. Без жодного з них оцінювалися на TRUE, Steps mentioned в ELSE: умова є executed.

1
2
3
4
5
6
7
8
9
10
11

Sub IF_ELSEIF_ELSE_FUNCTION()
If 1 > 4 Then
MsgBox "1 is greater than 4"
ElseIf 2 > 4 Then
MsgBox "2 is greater than 4"
ElseIf 3 > 4 Then
MsgBox "3 is greater than 4"
Else:
MsgBox "1, 2 або 3 є менш 4"
End If
End Sub

Quick Tip – Як зробити IF statements work faster

Знижка на сторінці коду appear similar. Два ELSEIF умов в другій функції мають бути схвалені. Which один з наведених пір в VBA code do you think executes faster?:
End If
Next i
MsgBox Timer - t
End Sub

answer is that the second one executes much faster than the first. Why? Тому, що дві секунди потребують застосування в ході через нерівні лінії з коду перед тим, як визначити, що оцінюються в TRUE. Зверніть увагу, що перша умова ELSEIF, що якщо TRUE gets executed and none of thether conditions are evaluated, even if they were to also evaluate to TRUE. У першому положенні VBA коду, ELSEIF функція on-line 6 evaluates to TRUE while in the second, line 5 meets the criteria. У тому, що більше, ніж умова, використовується для оцінки на TRUE, earlier it should be placed in the VBA code, all else being the same.

Однорядкова та багаторядкова конструкції оператора If...Then...Else та функція IIf, що використовуються у коді VBA Excel – синтаксис, компоненти, приклади.

Оператор If...Then...Else

Оператор If...Then...Elseпризначений передачі управління одному з блоків операторів залежно від результатів перевірених умов.

Однорядкова конструкція

Оператор If...Then...Elseможе використовуватися в однорядковій конструкції без ключових слів Else, End If.

Синтаксис однорядкової конструкції If...Then...

If[умова] Then[оператори]

Компоненти однорядкової конструкції If...Then...

  • умова Trueабо False;
  • оператори умоваповертає значення True;

Якщо компонент умоваповертає значення False, блок операторів конструкції If...Then...

Приклад 1

Sub primer1() Dim d As Integer, a As String d = InputBox("Введіть число від 1 до 20", "Приклад 1", 1) If d > 10 Then a = "Число " & d & " більше 10" MsgBox a End Sub

Багаторядна конструкція

Синтаксис багаторядкової конструкції If...Then...Else

If[умова] Then[оператори] ElseIf[умова] Then[оператори] ---------------- Else[оператори] End If

Компоненти багаторядкової конструкції If...Then...Else:

  • умова- числове або рядкове вираження, що слідує за ключовим словом Ifабо ElseIfта повертаюче логічне значення Trueабо False;
  • оператори- блок операторів коду VBA Excel, який виконується, якщо компонент умоваповертає значення True.
  • пунктирна лініяпозначає додаткові структурні блоки з рядка ElseIf [умова] Thenта рядки [оператори];
  • блок операторів після ключового слова Elseвиконується в будь-якому випадку, але структурний блок коду з рядка Elseта рядки [оператори]не є обов'язковим і може бути пропущений.

Якщо компонент умоваповертає значення False, наступний за ним блок операторів конструкції If...Then...Elseпропускається та управління програмою передається наступному рядку коду.

Найпростіший варіант багаторядкової конструкції If...Then...Else:

If[умова] Then[оператори] Else[оператори] End If

Приклад 2

Sub primer2() Dim d As Integer, a As String d = InputBox("Введіть число від 1 до 40", "Приклад 2", 1) If d< 11 Then a = "Число " & d & " входит в первую десятку" ElseIf d >10 And d< 21 Then a = "Число " & d & " входит во вторую десятку" ElseIf d >20 And d< 31 Then a = "Число " & d & " входит в третью десятку" Else a = "Число " & d & " входит в четвертую десятку" End If MsgBox a End Sub

Функція IIf

Функція IIfперевіряє задану умову та повертає значення залежно від результату перевірки.

Синтаксис функції

IIf([умова], [якщо True], [якщо False])

Компоненти функції IIf

  • умова- числове або рядкове вираження, що повертає логічне значення Trueабо False;
  • якщо True IIf, якщо умоваповернуло значення True;
  • якщо False- значення, яке повертає функція IIf, якщо умоваповернуло значення False.

Приклад 3

Sub primer3() Dim d As Integer, a As String d = InputBox("Введіть число від 1 до 20", "Приклад 3", 1) a = IIf(d< 10, d & " - число однозначное", _ d & " - число двузначное") MsgBox a End Sub

При натисканні кнопки «Cancel» або закритті хрестиком діалогового вікна InputBox з прикладів, генерується помилка, тому що в цих випадках повертає порожній рядок. Присвоєння порожнього рядка змінної типу D Integer викликає помилку. При натисканні кнопки "OK" діалогового вікна, числа, вписані в поле введення в текстовому форматі, VBA Excel автоматично перетворює на числовий формат змінної d.

Основні оператори мови VBA

Коментарі (0)

3.1. Правила запису операторів

При записі операторів слід дотримуватися наступних правил:

Кожен новий оператор записується з нового рядка.

Щоб записати кілька операторів на одному рядку, їх поділяють між собою двокрапкою (:).

Якщо оператор не міститься в одному рядку, то необхідно поставити в кінці рядка пробіл і знак підкреслення (_), а потім продовжити частину, що не помістилася, на наступному рядку.

3.2. Оператор привласнення

Оператор привласнення використовується, якщо якийсь змінної потрібно надати нове значення. Він має наступний синтаксис:

ІМ'Я_ЗМІННОЇ= ВИРАЗ

Спочатку обчислюється вираз у правій частині, а потім результат надається змінній, що стоїть у лівій частині.

Наприклад. Записати за допомогою оператора привласнення наступний математичний вираз:

На VВА цей вираз можна записати у вигляді наступного оператора:

Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))

3 .3. Оператори введення-виводу

3 .3.1. Оператор та функція MsgBox

Оператор MsgBoxздійснює виведення інформації у діалоговому вікні та встановлює режим очікування натискання кнопки користувачем.

Він має наступний синтаксис:

MsgBox Повідомлення[,Кнопки][, Заголовок]

Аргументи:

Повідомлення - обов'язковий аргумент, що задає у вікні інформаційне повідомлення. Може складатися з кількох текстових рядків, об'єднаних знаком & . Використання у цьому аргументі Chr(13)призводить до переходу на новий рядок під час виведення інформації.

Кнопки - значення цього аргументу визначає категорії кнопок, що з'являються у вікні. Від значення аргументу кнопки залежить також, чи з'являється у вікні будь-який значок. Якщо не вказано, які кнопки необхідно відображати у вікні повідомлень, використовується значення за промовчанням, яке відповідає кнопці ОК. У табл. 3.1 наведено можливі комбінації кнопок та значків у вікні повідомлень.

Заголовок - Задає заголовок вікна.

Функція MsgBoxповертає значення типу Integer, яке вказує, яка кнопка була натиснута у діалоговому вікні.

Таблиця 3.1. Допустимі значення змінної кнопки

Відображення

Аргумент

Кнопка ОК

Кнопки ОК та Скасування

Кнопки Так і Ні

Кнопки Так, Ні та Скасування

Кнопки Припинити, Повторити та Ігнорувати

VbAbortRetryIgnore

Кнопки Повторити та Скасувати.

Інформаційний знак

Знак питання

Знак оклику

Наприклад. Вивести повідомлення про поточну дату.

MsgBox "Сьогодні на календарі" & Date , "Увага"

В результаті буде виведено наступне вікно (рис.3.1).

Після натискання кнопки ОК вікно повідомлення закриється, і виконання програми відновиться з оператора, що стоїть безпосередньо за викликом MsgBox.

3.3.2. Функція InputBox

Функція InputBoxздійснює введення значень змінних за допомогою вікна введення та має наступний синтаксис:

Ім'я_Змінний = InputBox(Повідомлення[, Заголовок] )

Аргументи:

Повідомлення - Обов'язковий аргумент. Задає у вікні інформаційне повідомлення, що зазвичай пояснює сенс величини, що вводиться

Заголовок - Задає заголовок вікна.

Наприклад, Ввести значення змінної N з клавіатури, передбачивши значення за промовчанням 10.

Для цього можна використовувати наступний оператор:

N = InputBox("Введіть N", "Введення вихідних даних",10)

В результаті буде виведено наступне вікно для введення змінної значення N (рис.3.2).

Якщо значення за замовчуванням підходить користувачеві, то після натискання кнопки ОК вікно введення закриється, змінній N присвоюється значення 10 і виконання програми відновиться з оператора, що стоїть безпосередньо за викликом InputBox.

Якщо значення за замовчуванням не підходить користувачеві, то перед клацанням по кнопці ОК необхідно ввести потрібне значення змінної N.

3 .4. Умовний оператор IF

Для реалізації розгалужувального обчислювального процесу у VBA використовується оператор If…Then…Else,який є найпростішою формою перевірки умов. Він має наступний синтаксис:

IfУМОВИThenОПЕРАТОР_1ElseОПЕРАТОР_2

ОПЕРАТОР_1виконується, якщо УМОВИістинно, інакше виконується ОПЕРАТОР_2. При цьому оператор If…Then…Else записується в один рядок.

УМОВИ- Це вираз логічного типу. Результат виразу має булевський тип. Вираз може бути простим та складним. При записі простих умов можуть використовуватись всі можливі операції відносини, зазначені в табл. 3.2.

Таблиця3 .2. Логічні відносини

Операція

Назва

Вираз

Результат

True, якщо А дорівнює В

True, якщо А не дорівнює В

True, якщо А,більше

True, якщо А менше

Більше чи рівно

True, якщо А більше або одно

Менше або дорівнює

True, якщо А менше або дорівнює

Складні умови утворюються із простих шляхом застосування логічних операцій та круглих дужок. Список логічних операцій наведено у табл. 3.3.

Таблиця3 .3. Логічні операції

Назва

Вираз

Результат

Логічне
заперечення

Логічне І

Логічне АБО

В умовному операторі допустиме використання блоку операторів замість кожного оператора. У цьому випадку умовний оператор має вигляд:

IfУМОВИThen

БЛОК_ОПЕРАТОРІВ_1

БЛОК_ОПЕРАТОРІВ_2

End If

В умовному операторі може перевірятись декілька умов. У цьому випадку умовний оператор має вигляд:

IfУМОВИ_1Then

БЛОК_ОПЕРАТОРІВ_1

ElseIfУМОВИ_2Then

БЛОК_ОПЕРАТОРІВ_2

Else

EndIf

Приклад 1. Написати частину програми алгоритму на рис. 3.3.

приклад 2.Написати частину програми алгоритму на рис. 3.4.

3.5. Оператор вибору Select Case

Оператор Select Case зручно використовувати, коли в залежності від значення деякого виразу, що має кінцеву множину допустимих значень, необхідно виконати різні дії. Він також відноситься до умовних операторів, але має інший вигляд:

Select CaseПЕРЕВІРОВАНЕ_ВИРАЗ

CaseЗНАЧЕННЯ_1

ОПЕРАТОРИ_1

CaseЗНАЧЕННЯ_ 2

ОПЕРАТОРИ_ 2

. . .

CaseЗНАЧЕННЯ_N

ОПЕРАТОРИ_N

[ CaseElse

Інакше_ ОПЕРАТОРИ]

End Select

ПЕРЕВІРОВАНЕ_ВИРАЗможе мати будь-який скалярний тип, крім речового. ЗНАЧЕННЯскладаються з довільної кількості значень або діапазонів, відокремлених один від одного комами.

Тип ЗНАЧЕНЬповинен збігатися з типом ПЕРЕВІРНОГО_ВИРАЗИ.

Спочатку обчислюється ПЕРЕВІРОВАНЕ_ВИРАЗ. Якщо його значення збігається з одним із значень ЗНАЧЕННЯ_I, то виконаються ОПЕРАТОРИ_I End Select. Якщо його значення не збігається з жодним значенням ЗНАЧЕННЯ_I, то виконаються Інакше_операторита управління передається оператору, що стоїть після End Select

Наприклад.Написати частину програми алгоритму на рис. 3.5, що визначає значення змінної S залежно від значення змінної n.

3.6. Оператори циклу

Для реалізації циклічного обчислювального процесу, тобто багаторазового виконання одного або декількох операторів, служить оператор циклу For…Next, який має наступний синтаксис:

ForЛІЧИЛЬНИК=НАЧ_ЗНАЧЕННЯТoКОН_ЗНАЧЕННЯStepКРОК

БЛОК_ОПЕРАТОРІВ

БЛОК_ОПЕРАТОРІВ

NextЛІЧИЛЬНИК

Цикл For…Next перебирає значення змінної ЛІЧИЛЬНИК, яка є параметром циклу, від початкового до кінцевого значення із зазначеним кроком зміни. При цьому забезпечується виконання блоку операторів тіла циклу при кожному новому значенні лічильника. Якщо StepКРОКу конструкції відсутня, то за замовчуванням вважається, що крок дорівнює 1. За оператором Exit Forможна вийти з оператора циклу до того, як ЛІЧИЛЬНИКдосягне останнього значення.

Для перебору об'єктів із групи подібних об'єктів, наприклад, осередків із діапазону або елементів масиву, зручно використовувати оператор циклу For…Each…Next.

For EachЕлементInГрупа

БЛОК_ ОПЕРАТОРІВ

БЛОК_ОПЕРАТОРІВ

NextЕлемент

У VBA для організації циклів з невідомим заздалегідь числом повторень використовуються інші оператори циклу:

цикли з передумовою DoWhileLoop,

DoUntilLoop;

цикли з постумовою - DoLoopWhile,

DoLoopUntil.

Нижче наведено синтаксис цих операторів циклу:

Цикл із передумовоюDo While Loop

Do WhileУМОВИ

БЛОК_ОПЕРАТОРІВ

БЛОК_ОПЕРАТОРІВ

Цикл із передумовоюDo Until Loop

DoUntilУМОВИ

БЛОК_ОПЕРАТОРІВ

БЛОК_ОПЕРАТОРІВ

Цикл з постумовоюDo Loop While

БЛОК_ ОПЕРАТОРІВ

БЛОК_ОПЕРАТОРІВ

Loop WhileУМОВИ

Цикл з постумовоюDo Loop Until

БЛОК_ ОПЕРАТОРІВ

БЛОК_ОПЕРАТОРІВ

Loop UntilУМОВИ

Оператор DoWhile…Loopзабезпечує багаторазове повторення блоку операторів доти, доки УМОВИдотримується, а оператор



Інші новини

3.5.1 Оператори умовного та безумовного переходу. Оператор If…Then... Else

Перевірка умов у VBA, оператор If...Then... Else, вкладені конструкції If

Оператори умовного переходу- одні з найважливіших і найчастіше використовуваних елементів у мовах програмування. Загальний принцип їхньої роботи простий: перевіряється відповідність якимось умовам (істинність чи хибність будь-яких висловів) й у залежність від цього виконання програми спрямовується з однієї чи інший гілки. У VBA передбачено два оператори умовного переходу: If… Then... Else та Select Case.

Оператор If… Then... Else – найпопулярніший у програмістів. Повний синтаксис виглядає так:

If Умова Then
Команди1

При цьому:

  • Умова- Вираз, який перевіряється на істинність. Якщо воно істинне, то виконуються Команди1, якщо хибно - Команди2;
  • УмовиN- додаткові умови, які можна перевірити. Якщо вони виконуються (вираз УмовиN істинно), то виконуються КомандиN.

Оператор If…Then... Else застосовується:

  • коли потрібно перевірити на відповідність одній умові та у разі відповідності зробити якусь дію:

If nTemperature< 10 Then

MsgBox "Одягти куртку"

  • коли потрібно зробити те, що й у попередньому прикладі, а у разі невідповідності виконати іншу дію:

If nTemperature< 10 Then

MsgBox "Одягти куртку"

MsgBox "Одягти вітровку"

  • коли потрібно перевірити на відповідність декільком умовам (зверніть увагу на використання логічних операторів):

If (nTemperature< 10) And (bRain = True) Then

MsgBox "Одягнути куртку та взяти парасольку"

  • якщо перша перевірка повернула False, потрібно перевірити на відповідність ще декільком умовам (у цьому випадку зручно використовувати ElseIf):

If (bIGoInCar = True) Then

MsgBox "Одягтися для машини"

ElseIf nTemperature< 10 Then

MsgBox "Одягти куртку"

MsgBox "Можна йти у сорочці"

У цьому прикладі, оскільки bIGoInCar - змінна типу Boolean і сама по собі приймає значення True або False, перший рядок може виглядати так:

If bIGoInCar Then …

Деякі зауваження щодо використання If…Then... Else:

  • ключове слово Then має знаходитися в одному рядку з If та умовою. Якщо ви перенесете його на наступний рядок, буде видано повідомлення про помилку;
  • якщо розмістити команду, яку потрібно виконати при істинності умови, що перевіряється, на одному рядку з If і Then, то End If можна не писати:

If nTemperature< 10 Then MsgBox "Одеть куртку"

  • якщо ж ви використовуєте кілька команд або конструкції Else/ElseIf, то End If наприкінці потрібно писати обов'язково – інакше виникне синтаксична помилка.
  • для вираження If…Then рекомендується використовувати відступи для виділення блоків команд. Інакше читати код буде важко.
  • оператори If ... Then можна вкладати один в одного:

If MyVar = 5 Then

MsgBox "MyVar = 5"

If MyVar = 10 Then

MsgBox "MyVar = 10"

Планшети