Share via


Istruzione Sub (Visual Basic)

Consente di dichiarare il nome, i parametri e il codice con i quali si definisce una routine Sub.

[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Sub ]
    [ statements ]
End Sub

Parti

Argomento

Definizione

attributelist

Facoltativo. Vedere Elenco degli attributi.

Partial

Facoltativo. Indica la definizione di un metodo parziale. Vedere Metodi parziali (Visual Basic).

accessmodifier

Facoltativo. ad esempio uno dei seguenti:

Vedere Livelli di accesso in Visual Basic.

proceduremodifiers

Facoltativo. ad esempio uno dei seguenti:

Shared

Facoltativo. Vedere Shared.

Shadows

Facoltativo. Vedere Shadows.

name

Obbligatoria. Nome della routine. Vedere Nomi di elementi dichiarati (Visual Basic). Per creare una routine del costruttore per una classe, impostare il nome di una routine Sub sulla parola chiave New. Per ulteriori informazioni, vedere Durata degli oggetti: come creare e distruggere oggetti (Visual Basic).

typeparamlist

Facoltativo. Elenco dei parametri di tipo per una routine generica. Vedere Elenco dei tipi.

parameterlist

Facoltativo. Elenco dei nomi di variabili locali che rappresentano i parametri di questa routine. Vedere Elenco dei parametri (Visual Basic).

Implements

Facoltativo. Consente di indicare che questa procedura implementa una o più routine Sub, ognuna definita in un'interfaccia implementata della classe o dalla struttura contenente la routine. Vedere Istruzione Implements.

implementslist

Obbligatoria se viene fornita Implements. Elenco di routine Sub implementate.

implementedprocedure [ , implementedprocedure ... ]

Ogni implementedprocedure presenta la sintassi e le parti seguenti:

interface.definedname

ParteDescrizione
interface Obbligatoria.Nome di un'interfaccia implementata dalla classe o struttura contenente questa routine.
definedname Obbligatorio.Nome mediante il quale la routine viene definita in interface.

Handles

Facoltativo. Consente di indicare che questa routine è in grado di gestire uno o più eventi specifici. Vedere Clausola Handles (Visual Basic).

eventlist

Obbligatoria se viene fornita Handles. Elenco di eventi gestiti dalla routine.

eventspecifier [ , eventspecifier ... ]

Ogni eventspecifier presenta la sintassi e le parti seguenti:

eventvariable.event

ParteDescrizione
eventvariable Obbligatoria.La variabile oggetto dichiarata con il tipo di dati della classe o della struttura che genera l'evento.
event Obbligatorio.Nome dell'evento gestito dalla routine.

statements

Facoltativo. Blocco di istruzioni da eseguire nella routine.

End Sub

Consente di terminare la definizione di questa routine.

Note

È necessario che il codice eseguibile sia inserito all'interno di una routine. Quando non è necessario restituire un valore al codice chiamante, utilizzare una routine Sub. Se, invece, è necessario restituire un valore, utilizzare una routine Function.

È possibile utilizzare la parola chiave Sub solo a livello di modulo. In altri termini, il contesto della dichiarazione per una routine di tipo Sub deve essere una classe, una struttura, un modulo o un'interfaccia e non può essere un file di origine, uno spazio dei nomi, una routine o un blocco. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti (Visual Basic).

L'impostazione predefinita delle routine Sub è l'accesso pubblico. È possibile modificarne i livelli di accesso mediante gli appositi modificatori.

Regole

  • Implementazione. Se la routine utilizza la parola chiave Implements, la classe o la struttura che la contiene deve includere un'istruzione Implements subito dopo la relativa istruzione Class o Structure. Nell'istruzione Implements deve essere compresa ogni interfaccia specificata in implementslist. Il nome tramite il quale un'interfaccia definisce la Sub tuttavia (in definedname) non deve essere uguale al nome della sua routine (in name).

Comportamento

  • Chiusura di una routine. Quando la routine Sub chiude il codice che effettua la chiamata, l'esecuzione continua con l'istruzione che segue l'istruzione che l'ha chiamata.

    Le istruzioni Exit Sub e Return provocano un'uscita immediata da una routine Sub. Qualsiasi numero delle istruzioni Exit Sub e Return può essere visualizzato in un punto qualsiasi della procedura ed è possibile mescolare le istruzioni Exit Sub e Return.

    Nell'esempio seguente viene illustrato un ritorno da una routine Sub.

    Sub mySub(ByVal q As String)
        Return
    End Sub 
    
  • Chiamata di una routine. Una routine Sub o Function è una routine distinta in grado di accettare parametri e di eseguire una serie di istruzioni. A differenza della routine Function che restituisce un valore, la routine Sub non può essere utilizzata nelle espressioni.

    Per chiamare una routine Sub, è necessario specificarne il nome seguito dall'elenco degli argomenti racchiuso tra parentesi, all'interno di un'istruzione. Le parentesi possono essere omesse solo se non si specificano argomenti. Il codice sarà tuttavia più leggibile se si includono sempre le parentesi.

    Anche l'istruzione Call può essere utilizzata per chiamare una routine Sub migliorando in tal modo la leggibilità del codice.

Risoluzione dei problemi

Ordine di esecuzione.  In Visual Basic le espressioni aritmetiche vengono a volte riorganizzate per migliorare il grado di efficienza interno. Pertanto, se l'elenco degli argomenti include espressioni che chiamano altre routine, non è possibile fare affidamento su quelle che vengono chiamate in un particolare ordine.

Esempio

Nell'esempio seguente l'istruzione Sub viene utilizzata per definire il nome, i parametri e il codice che formano il corpo di una routine Sub.

Sub computeArea(ByVal length As Double, ByVal width As Double)
    ' Declare local variable.
    Dim area As Double
    If length = 0 Or width = 0 Then
        ' If either argument = 0 then exit Sub immediately.
        Exit Sub
    End If
    ' Calculate area of rectangle.
    area = length * width
    ' Print area to Immediate window.
    Debug.WriteLine(area)
End Sub

Vedere anche

Attività

Procedura: utilizzare una classe generica (Visual Basic)

Risoluzione dei problemi relativi alle routine (Visual Basic)

Procedura: creare un metodo parziale (Visual Basic)

Riferimenti

Istruzione Implements

Istruzione Function (Visual Basic)

Elenco dei parametri (Visual Basic)

Istruzione Dim (Visual Basic)

Istruzione Call (Visual Basic)

Clausola Of (Visual Basic)

Concetti

Matrici di parametri (Visual Basic)

Metodi parziali (Visual Basic)