Istruzione Function

Una funzione è un blocco di codice che viene eseguito quando richiamato. Una funzione di solito è richiamata da un'espressione.

È possibile passare dati, noti come parametri o argomenti, a una funzione. È possibile passare un parametro per valore o per riferimento. Quando si tratta di un riferimento, le modifiche applicate al parametro nella funzione saranno inviate al codice che l'ha richiamata.

Una funzione di solito restituisce dei dati come risultato.

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 nome di tipo

frammento di tipi di dati primitivi


      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
frammento di carattere

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!