Організація розгалужень, умовний оператор If

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

Оператор розгалуження (умовного переходу) в OOo Basic має таку структуру:
If <Умова> Then
<Інструкції>
[Else
<Інструкції_Else>]
End If

Якщо під час виконання коду Умова приймає значення True (істина), то виконуються інструкції після Then, якщо False (хибність), то виконуються інструкції після Else. Інструкції, які потрібно виконати записують з нового рядка, як після слова Then, так і після Else. Їх може бути довільна кількість, оскільки послідовність інструкцій після Then обмежується словом Else, а послідовність інструкцій після Else – ОБОВ’ЯЗКОВО словами End If.

Прості умови у командах розгалуження мають вигляд:
<Змінна> <Операція Відношення> <Вираз>
причому Змінна і Вираз повинні бути одного і тогож типу. Складні умови утворюються з простих за допомогою логічних операцій And, Or, Xor, Not, а змінити порядок виконання логічних операцій можна, використовуючи круглі дужки. У більшості підручників з програмування замість терміну Умова використовують термін Логічний вираз, що більш влучно характеризує саме поняття, оскільки результатом Операцій Відношення є логічне значення (тип Boolean), так само як і результатом логічних операцій.

Поширеними є ситуації коли після перевірки умови потрібно або виконувати якусь послідовність дій, або не виконувати нічого. Для таких випадків передбачена так звана коротка форма розгалуження, без слова Else та інструкцій після нього:

If <Умова> Then
<Інструкції >
End If

У такій команді розгалуження інструкції виконується, якщо результат перевірки умови істинний, і не виконуються в протилежному випадку, а далі виконання макроса продовжується з інcтрукції, наступної після слів End If. Якщо при використанні короткої форми розгалуження блок після Then складається з одного оператора, то вживати End If необов’язково, але при цьому вся конструкція повинна бути записана в одному рядку:
If <Умова> Then <Інструкція>

Якщо розгалуження алгоритму макроса має три (або більше) гілки, то можна використовувати вкладені оператори If, наприклад:
If <Умова_1> Then
<Інструкції_1>
Else
If <Умова_2> Then
<Інструкції_2>
Else
<Інструкції_3>
End If
End If

Тут Інструкції_1 виконуватимуться, якщо істинна Умова_1 (незалежно від Умови_2); Інструкції_2 виконуватимуться, якщо Умова_1 хибна, а Умова_2 істинна; і якщо одночасно хибні Умова_1 та Умова_2, то виконуватимуться Інструкції_3.

Для зручнішого запису вкладених розгалужень у OOo Basic перебачена інструкція ElseIf, з використанням якої наведена вище команда розгалуження буде мати вигляд:

If <Умова_1> Then
<Інструкції_1>
ElseIf <Умова_2> Then
<Інструкції_2>
Else
<Інструкції_3>
End If

Така форма вкладених розгалужень дозволяє скоротити код макроса, і зробити його зрозумілішим для читання. Очевидно, що вкладених розгалужень, а, отже, і вкладених умов ElseIf можна використовувати довільну кількість.