使用程序和函式
以下描述了 LibreOffice Basic 中程序和函式的基本用法。

在建立新模組時,LibreOffice Basic 會自動插入一個名為「Main」的 SUB。這個標準名稱與 LibreOffice Basic 專案的順序和起始點無關。您也可以為 SUB 重新命名,而不會帶來問題。

公開變數、程序、函式的名稱有使用限制。不能用和所處函式庫中的模組名稱相同的名稱。
程序 (SUB) 和函式 (FUNCTION) 可以協助您將一個程式分割為若干邏輯片段,從而使程式保持結構化。
使用程序和函式的一個好處是,為某個專案開發的含有任務程式元件的程式碼,同樣可以用於其他專案。
向程序 (SUB) 和函式 (FUNCTION) 傳送變數
可以向程序和函式傳送變數,但必須在 SUB 或 FUNCTION 中宣告所需的參數:
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
程式碼
End Sub
呼叫 SUB 時使用以下語法:
SubName(Value1, Value2,...)
傳送到 SUB 的參數必須適合 SUB 宣告中指定的參數。
同樣的情況也適用於 FUNCTION,以便傳回函式結果。透過指定函式名稱,並指定該函式傳回值的參數,可以在函式結束之前直接定義傳回結果。(請參閱示例)。
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
程式碼
FunctionName=Result
End Function
呼叫 FUNCTION 時使用以下語法:
Variable=FunctionName(Parameter1, Parameter2,...)

您也可以使用完全合格的名稱來呼叫程序或函式:
Library.Module.Macro()
例如,若要從 Gimmicks 函式庫呼叫 Autotext 巨集,請使用下列指令:
Gimmicks.AutoText.Main()
透過值或參照傳送變數
可以透過參照或值將參數傳送到 SUB 或 FUNCTION。除非特別指定,參數通常透過參照傳送。這表示 SUB 或 FUNCTION 可以取得該參數,並且可以讀取和修改參數值。
如果要透過值傳送參數,請在呼叫 SUB 或 FUNCTION 時,在參數前插入關鍵字「ByVal」,例如:
Result = Function(ByVal Parameter)
在此種情況下,FUNCTION 不會修改參數原來的內容,因為它得到的只是參數值而不是參數本身。
變數的作用範圍
在 SUB 或 FUNCTION 內定義的變數僅在該程序結束之前有效。此變數稱為「區域」變數。許多情況下,您需要在所有程序中、所有程式庫的各個模組中有效或 SUB 或 FUNCTION 結束後仍然有效的變數。
在 SUB 或 FUNCTION 之外宣告變數
GLOBAL VarName As TYPENAME
只要 LibreOffice 階段作業未結束,變數就有效。
PUBLIC VarName As TYPENAME
變數在所有模組中均有效。
PUBLIC VarName As TYPENAME
變數僅在此模組中有效。
PUBLIC VarName As TYPENAME
變數僅在此模組中有效。
private 變數的範例
設定 CompatibilityMode(true) 以強制 private 變數在模組間為私有。
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hello"
print "in module1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Now returns empty string
' (or rises error for Option Explicit)
print "Now in module2 : ", myText
End Sub
結束 SUB 或 FUNCTION 後儲存變數內容
STATIC VarName As TYPENAME
變數保留其值,直到下次進入 FUNCTION 或 SUB。該宣告必須位於 SUB 或 FUNCTION 中。
指定 FUNCTION 的傳回值類型
與變數一樣,函式名稱後必須含有類型宣告字元或由「As」與相應關鍵字 (位於參數清單結尾處) 指示的類型,以定義函式傳回值的類型。例如:
Function WordCount(WordText As String) As Integer