Структура макросів, процедури та функції

Кожен модуль у бібліотеках документів може містити довільну кількість макросів. Для того, щоб можна було відрізняти макроси один від одного вони обов’язково повинні мати:

  • ім’я, унікальне всередині модуля (модуль не може містити двох різних макросів з одинаковими назвами),
  • початок і закінчення, позначені відповідно службовими словами Sub та End Sub, або Function та End Function.

Слова Sub та Function позначають два різні види макросів: макроси-процедури та макроси-функції відповідно. Основна відмінність між цими видами макросів полягає в тому, що функції після виконання своїх інструкцій повертають деяке значення, отримати яке можна за іменем функції і використовувати для обчислення виразів у правій частині оператора присвоєння.

Процедура – це самостійна частина коду, яка має ім’я і об’єднує в одне ціле деяку послідовність інструкцій, вона може мати аргументи і змінювати їх значення в ході виконання інструкцій. Синтаксис (тут, і надалі, в квадртних дужках записані службові слова або елементи синтаксису, які можуть бути відсутні, а дужки “< >” обмежують загальні фрагменти сиснтаксису, які при використанні необхідно деталізувати):

Sub <Ім’я> [(CписокАргументів)]
<Інструкції>
[Exit Sub]
<Інструкції>
End Sub

Ім’я процедури Sub повинно задовольняти стандартні правила іменування змінних.
Інструкції – будь-яка група інструкцій, що виконується в процедурі Sub.
Інструкція Exit Sub приводить до негайного виходу з процедури Sub.
СписокАргументів – набір аргументів, які передаються в процедуру Sub при її виклику.
Імена змінних розділяються комою, а опис аргумента має такий синтаксис:
[Optional] [ByVal|ByRef] Ім’яЗмінної [As Тип]

  • Optional – ключове слово, яке вказує, що аргумент не є обов’язковим.
  • ByVal – вказує, що цей аргумент передається за значенням.
  • ByRef – вказує, що цей аргумент передається за адресою, спосіб передачі аргументів ByRef використовується в OOo Basic (так як і у VBA) за замовчуванням.

Синтаксис опису функції містить ті самі компоненти, що і опис процедури. Інструкція Exit Function приводить до негайного завершення виконання інструкції функції. Подібно до підпрограм-процедур Sub, підпрограми-функції Function можуть мати аргументи, виконувати послідовність інструкцій і змінювати значення своїх аргументів. Синтаксис опису функції:

Function <Ім’яФункції> [(CписокАргументів)] [As Тип]
<Інструкції>
[<Ім’яФункції = Вираз>]
[Exit Function]
<Інструкції>
[<Ім’яФункції = Вираз>]
End Function

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

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