Програмування розгалужень

Керуючі конструкції розгалуження дозволяють перевірити деяку умову, а потім, залежно від результатів цієї перевірки, виконати ту чи іншу групу операторів. Для організації розгалужень у 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("Яку позначку ти отримав з інформатики?")