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