Contenuto

# 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:

      [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

          {[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.

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.

##### frammento di nome di tipo

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

##### frammento di carattere

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

## 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

Argomenti correlati

Basi delle Subroutine

Uso di procedure, funzioni e proprietà

Istruzione Sub

Istruzione Property