Алгоритмічна конструкція “цикл” полягає у повторенні певної послідовності дій (інструкцій). Очевидно, що для практики цінними є лише скінченні цикли, які, відповідно, повинні мати деяку умову для визначення того, чи повторювати послідовність дій черговий раз, чи завершити таке повторення. Послідовність інструкцій, що повторюється в циклі прийнято називати тілом циклу, а самі цикли ділити на цикли з перед- та післяумовою, залежно від того коли виконується перевірка умови завершення циклу — до, чи після чергового виконання його тіла.
У OpenOffice.org Basic цикли з передумовою та цикли з післяумовою можна записувати за допомогою оператора циклу Do. Так само, як і у VBA, в OOo Basic існує чотири різні варіанти оператора Do. Умова виходу з циклу може задаватися службовими словами While (поки) та Until (до), при цьому в обидвох випадках умова може бути розміщена як на початку так і в кінці тіла циклу. Тобто є два варіанти циклу з передумовою та два – з післяумовою. Цикли з передумовою:
Do While <Умова> <Інструкції> [Exit Do] <Інструкції> Loop |
Do Until <Умова> <Інструкції> [Exit Do] <Інструкції> Loop |
В першому варіанті цикл виконується поки результат перевірки умови має логічне значення True, в другому – навпаки: якщо умова набуває значення True, виконання циклу припиняється.
Цикли з післяумовою:
Do <Інструкції> [Exit Do] <Інструкції> Loop While <Умова> |
Do <Інструкції> [Exit Do] <Інструкції> Loop Until <Умова> |
Ці два варіанти оператора циклу відрізняються від попередніх тим, що інструкції в тілі циклу виконуватимуться хоча б один раз, оскільки перевірка умови здійснюється після виконання циклу.
Крім розглянутих чотирьох варіантів операторів циклу Do у VBA можна використовувати також спрощений варіант оператора циклу з передумовою:
While <Умова>
<Інструкції>
Wend
Він виконує послідовність інструкцій, доки задана умова має значення True і є спрощеним записом оператора
Do While <Умова>
<Інструкції>
Loop
Оскільки оператори циклу з передумовою та післяумовою є взаємозамінними, то в більшості випадків користуються саме оператором While а не операторами Do.