Програмування розгалужень
Керуючі конструкції розгалуження дозволяють перевірити деяку умову, а потім, залежно від результатів цієї перевірки, виконати ту чи іншу групу операторів. Для організації розгалужень у VBA використовуються стандартний оператор розгалуження (короткого та повного)If. Then. Elseта оператор виборуSelectCase.
Оператор розгалуженняIf. Then. Else має кілька форм подання. Коротка форма оператора розгалуження If може мати як однорядкову, так і блокову форму. В один рядок коротка форма If може бути записана так:
IfThen- коротка форма в один рядок.
У блочній формі коротке розгалуження виглядає так:
Як умову можна використовувати логічний вираз, що повертає значення True (Істина) або False (брехня), або будь-який арифметичний вираз. Якщо використовується арифметичний вираз, то нульове значення цього виразу еквівалентно логічно False, а будь-яке ненульове вираз еквівалентно True.
У тому випадку, коли приймає значення False, то оператори, що становлять тіло короткого оператора розгалуження (ув'язнені міжThenтаEnd If), виконуватися не будуть.
У тих випадках, коли значення умови False має відповідати виконання будь-яких інших дій, а не просто пропуск оператора або групи операторів, використовується повна форма оператора розгалуження, що завжди має блокову форму запису:
Наприклад:Обчисліть значення виразу.
При введенні значень, наприкладx= 3,y= 3 програма працювати не буде. Отже, необхідно використовувати оператор розгалуження:
Privat Sub Кнопка0_Click()
Dim x, y, z As Double
x = Val(InputBox("Введіть x="))
y = Val(InputBox("Введітьy="))
If x - y <> 0 Then
MsgBox ("Знаменник дорівнює =0")
Якщо задачі представлено кілька умов, використовується наступний синтаксис:
[Блок операторів 1]
[Блок операторів 2]
Коли потрібно перевірити результат одного виразу, який може мати багато різних значень, і для кожного з цих значень треба виконати свою унікальну послідовність дій зручніше користуватися оператором керуванняSelectCaseзамістьIf… Then…Else.
Візьмемо, наприклад, таке завдання: Комп'ютер запитує студента, яку він отримав позначку з інформатики, та реагує на неї відповідним текстом. Ось програма без нововведень, яка використовуєIf:
Private Sub Кнопка1_Click()
Dim Otmetka As Integer
Otmetka = InputBox("Яку позначку ти отримав з інформатики?")
If Otmetka = 1 Or Otmetka = 2 Then
ElseIf Otmetka = 3 Then
MsgBox («Так собі»)
ElseIf Otmetka = 4 Then
ElseIf Otmetka = 5 Then
MsgBox («Таких позначок не буває!»)
Цю програму можна записати простіше з використанням оператора варіанта Select Case, що означає в перекладі ВИБЕРІ ВАРІАНТ:
Private Sub Кнопка1_Click()
Dim Otmetka As Integer
Otmetka = InputBox("Яку позначку ти отримав з інформатики?")