Routine Sub (Visual Basic)

Una routine Sub è una serie di istruzioni di Visual Basic racchiuse tra le istruzioni Sub e End Sub. La routine Sub esegue un'attività e quindi restituisce il controllo al codice chiamante, ma non restituisce un valore al codice chiamante.

Ogni volta che viene chiamata la routine, vengono eseguite le relative istruzioni, a partire dalla prima istruzione eseguibile dopo l'istruzione Sub e terminando con la prima istruzione End Sub, Exit Sub o Return rilevata.

È possibile definire una routine Sub in moduli, classi e strutture. Per impostazione predefinita, è Public, ed è quindi possibile chiamarla da qualsiasi posizione dell'applicazione che abbia accesso al modulo, alla classe o alla struttura in cui è stata definita. Il termine metodo descrive una routine Sub o Function a cui si accede dall'esterno del modulo, della classe o della struttura che definisce. Per altre informazioni, vedere Routine.

Una routine Sub può accettare argomenti, ad esempio costanti, variabili o espressioni, che vengono passati al codice chiamante.

Sintassi di dichiarazione

La sintassi per dichiarare una routine Sub è la seguente:

[modifiers] Sub SubName[(parameterList)]
    ' Statements of the Sub procedure.
End Sub

modifiers può specificare il livello di accesso e le informazioni sull'overload, l'override, la condivisione e shadowing. Per altre informazioni, vedere Istruzione Sub.

Dichiarazione dei parametri

Ogni parametro di routine viene dichiarato in modo analogo a come si dichiara una variabile, specificando il nome del parametro e il tipo di dati. È anche possibile specificare il meccanismo di passaggio e se il parametro è facoltativo o una matrice di parametri.

La sintassi per ogni parametro nell'elenco dei parametri è la seguente:

[Optional] [ByVal | ByRef] [ParamArray] parameterName As DataType

Se il parametro è facoltativo, è necessario specificare anche un valore predefinito come parte della relativa dichiarazione. La sintassi per specificare un valore predefinito è la seguente:

Optional [ByVal | ByRef]  parameterName As DataType = defaultValue

Parametri come variabili locali

Quando il controllo passa alla routine, ogni parametro viene considerato come una variabile locale. Ciò significa che la sua durata è uguale a quella della routine e il suo ambito è l'intera routine.

Sintassi di chiamata

Si richiama una routine Sub in modo esplicito con un'istruzione chiamante autonoma. Non è possibile chiamarla usando il relativo nome in un'espressione. È necessario specificare i valori per tutti gli argomenti che non sono facoltativi ed è necessario racchiudere l'elenco degli argomenti tra parentesi. Se non vengono specificati argomenti, è facoltativamente possibile omettere le parentesi. L'uso della parola chiave Call è facoltativo ma non consigliato.

La sintassi per una chiamata a una routine Sub è la seguente:

[Call] SubName[(argumentlist)]

È possibile chiamare un metodo Sub dall'esterno della classe che lo definisce. Prima di tutto, è necessario usare la parola chiave New per creare un'istanza della classe o chiamare un metodo che restituisce un'istanza della classe. Per altre informazioni, vedere New Operator. È quindi possibile usare la sintassi seguente per chiamare il metodo Sub sull'oggetto istanza:

object.MethodName[(argumentList)]

Illustrazione della dichiarazione e della chiamata

La routine Sub seguente indica all'operatore del computer quale attività l'applicazione sta per eseguire e visualizza anche un timestamp. Anziché duplicare questo codice all'inizio di ogni attività, l'applicazione chiama semplicemente tellOperator da varie posizioni. Ogni chiamata passa una stringa nell'argomento task che identifica l'attività avviata.

Sub tellOperator(ByVal task As String)
    Dim stamp As Date
    stamp = TimeOfDay()
    MsgBox("Starting " & task & " at " & CStr(stamp))
End Sub

Nell'esempio seguente viene illustrata una chiamata tipica a tellOperator.

tellOperator("file update")

Vedi anche