Istruzione Sub

Definisce una subroutine.

Sintassi:

Diagramma istruzione Sub


[Private | Public] Sub name[(argument1 [As typename][, argument2[char][,...]])]
    ' istruzioni
    [Exit Sub]
    ' istruzioni
End Sub

Parametri:

name: nome della subroutine.

arguments: parametri facoltativi 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!