Guida di LibreOffice 25.2
Definisce una subroutine.
  
[Private | Public] Sub name[(argument1 [As typename][, argument2[char][,...]])]
    ' istruzioni
    [Exit Sub]
    ' istruzioni
End Sub
name: nome della subroutine.
arguments: parametri facoltativi da passare alla subroutine.
      {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}
    Optional: l'argomento non è obbligatorio.
ByRef: l'argomento viene passato come riferimento. ByRef è l'impostazione predefinita.
ByVal: l'argomento viene passato come valore. Il suo valore può essere modificato dalla routine richiamata.
char: carattere di dichiarazione del Tipo.
typename: nome del tipo di dati primitivo. Si possono specificare anche tipi definiti in librerie o moduli.
= expression: specifica un valore predefinito per l'argomento, che rispetti il tipo dichiarato. Optional: per ogni argomento di questo tipo è necessario specificare un valore predefinito.
ParamArray: usate ParamArray quando il numero di parametri non è predeterminato. Uno scenario tipico è quello di una funzione di Calc definita dall'utente. L'uso di ParamArray dovrebbe essere limitato come ultimo parametro di una routine.
L'uso di ParamArray o = expression richiede che Option Compatible sia posizionato, in un modulo, prima della parte eseguibile del programma.
Se usate Option VBASupport 1, gli argomenti Optional senza un valore predefinito (= espressione) vengono inizializzati in base al loro tipo di dati, fatta eccezione per Variant.
      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
Sub ExampleExit
Dim sReturn As String
Dim sListArray(10) As String
Dim siStep As Single
    For siPasso = 0 to 10 ' Popola la matrice con dati di prova
        sListArray(siStep) = chr$(siStep + 65)
        MsgBox sListArray(siStep)
    Next siStep
    sReturn = LinSearch(sListArray(), "B")
    Print sReturn
End Sub
 
Function LinSearch( sList(), sItem As String ) As Integer
Dim iCount As Integer
' Linsearch ricerca un TextArray:sList() per una TextEntry:
' Il valore restituito è l'indice della voce o 0 (Null)
    For iCount=1 To Ubound( sList() )
        If sList( iCount ) = sItem Then
            Exit For ' sVoce trovato
        End If
    Next iCount
    If iCount = Ubound( sList() ) Then iCount = 0
    LinSearch = iCount
End Function