Istruzione Function

Definisce una subroutine che può essere usata come espressione per determinare il tipo di output restituito.

note

Le istruzioni Sub e Function possiedono metodi simili, senza distinzioni. Ricevono dei parametri come riferimento e permettono la loro modifica. Il compilatore di LibreOffice Basic accetta che le loro rispettive sintassi siano usate in modo interscambiabile.


Sintassi:

Diagramma istruzione Function


  [Private | Public] Function Name[char] (argument1 [As Type][, argument2[char][,...]]) [As typename]
          istruzioni
      [Exit Function]
          istruzioni
  End Function

Parametri:

scope: la visibilità predefinita di una funzione è Public (pubblico). Una visibilità Private (privata) caratterizza una routine interna, pensata per non essere utilizzata da altri moduli.

name (nome): nome della subroutine che dovrà contenere il valore restituito dalla funzione.

arguments: parametri da passare alla subroutine.

frammento di argomento

Frammento di argomento


      {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}
    
Parametri

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.

tip

L'uso di ParamArray o = expression richiede che Option Compatible sia posizionato, in un modulo, prima della parte eseguibile del programma.


warning

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.


frammento di nomi del tipo

frammento di tipi di dati primitivi


      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
frammento con caratteri

caratteri di dichiarazione del tipo


      { % | & | ! | # | $ | @ }
    

Esempi:


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

Sosteneteci!