Condividi tramite


Istruzione Sub (Visual Basic)

Aggiornamento: novembre 2007

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

  • attributelist
    Facoltativo. Vedere Elenco degli attributi.

  • Partial
    Facoltativo. Indica la definizione di un metodo parziale. Vedere Metodi parziali.

  • accessmodifier
    Facoltativo. Può essere uno dei seguenti:

    Vedere Livelli di accesso in Visual Basic.

  • proceduremodifiers
    Facoltativo. Può essere uno dei seguenti:

  • Shared
    Facoltativo. Vedere Shared.

  • Shadows
    Facoltativo. Vedere Shadows.

  • name
    Obbligatorio. Nome della routine. Vedere Nomi di elementi dichiarati.

  • 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 parametri.

  • 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 elemento implementedprocedure è associato alla sintassi e alle parti seguenti:

    interface.definedname

    Parte

    Descrizione

    interface

    Obbligatorio. 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 Handles.

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

    eventspecifier [ , eventspecifier ... ]

    Ogni elemento eventspecifier è associato alla sintassi e alle parti seguenti:

    eventvariable.event

    Parte

    Descrizione

    eventvariable

    Obbligatorio. 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.

  • EndSub
    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 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 predefinito.

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

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. È possibile inserire un numero illimitato di istruzioni Exit Sub e Return in qualsiasi punto della routine e combinare 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

Risoluzione dei problemi relativi alle routine

Procedura: creare un metodo parziale (Visual Basic)

Concetti

Matrici di parametri

Metodi parziali

Riferimenti

Istruzione Implements

Istruzione Function (Visual Basic)

Elenco parametri

Istruzione Dim (Visual Basic)

Istruzione Call (Visual Basic)

Of