Sub-Anweisung (Visual Basic)

Deklariert Namen, Parameter und Code, die eine Sub-Prozedur definieren.

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

Bestandteile

Ausdruck

Definition

attributelist

Optional. Siehe Attributliste.

Partial

Optional. Gibt die Definition einer partiellen Methode an. Weitere Informationen finden Sie unter Partielle Methoden (Visual Basic).

accessmodifier

Optional. Einer der folgenden Werte ist möglich:

Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

proceduremodifiers

Optional. Einer der folgenden Werte ist möglich:

Shared

Optional. Siehe Shared.

Shadows

Optional. Siehe Shadows.

name

Erforderlich. Name der Prozedur. Weitere Informationen finden Sie unter Namen deklarierter Elemente (Visual Basic). Um eine Konstruktorprozedur für eine Klasse zu erstellen, legen Sie den Namen einer Sub-Prozedur auf das New-Schlüsselwort fest. Weitere Informationen finden Sie unter Objektlebensdauer: Erstellen und Zerstören von Objekten (Visual Basic).

typeparamlist

Optional. Liste der Typparameter für eine generische Prozedur. Siehe Typliste.

parameterlist

Optional. Liste der Namen von lokalen Variablen, die die Parameter dieser Prozedur darstellen. Weitere Informationen finden Sie unter Parameterliste (Visual Basic).

Implements

Optional. Gibt an, dass diese Prozedur eine oder mehrere Sub-Prozeduren implementiert, deren jede in einer Schnittstelle definiert ist, die von der enthaltenden Klasse oder Struktur dieser Prozedur implementiert wird. Siehe Implements-Anweisung.

implementslist

Erforderlich, wenn Implements angegeben wird. Liste der implementierten Sub-Prozeduren.

implementedprocedure [ , implementedprocedure ... ]

Jede implementedprocedure hat folgende Syntax und folgende Bestandteile:

interface.definedname

BestandteilBeschreibung
interface Erforderlich.Der Name einer Schnittstelle, der von der enthaltenden Klasse oder Struktur dieser Prozedur implementiert wird.
definedname Erforderlich.Der Name, mit dem die Prozedur in interface definiert ist.

Handles

Optional. Gibt an, dass diese Prozedur ein oder mehrere bestimmte Ereignisse behandeln kann. Siehe Handles-Klausel (Visual Basic).

eventlist

Erforderlich, wenn Handles angegeben wird. Liste von Ereignissen, die diese Prozedur behandelt.

eventspecifier [ , eventspecifier ... ]

Jeder eventspecifier verfügt über folgende Syntax und folgende Bestandteile:

eventvariable.event

BestandteilBeschreibung
eventvariable Erforderlich.Objektvariable, die mit dem Datentyp der Klasse oder Struktur deklariert ist, die das Ereignis auslöst.
event Erforderlich.Name des Ereignisses, das von dieser Prozedur behandelt wird.

statements

Optional. Block von Anweisungen, die in dieser Prozedur ausgeführt werden sollen.

End Sub

Beendet die Definition dieser Prozedur.

Hinweise

Der gesamte ausführbare Code muss in einer Prozeduren enthalten sein. Verwenden Sie eine Sub-Prozedur, wenn Sie keinen Wert an den aufrufenden Code zurückgeben müssen. Verwenden Sie eine Function-Prozedur, wenn Sie einen Wert zurückgeben müssen.

Sub kann nur auf Modulebene verwendet werden. Dies bedeutet, dass der Deklarationskontext für eine Unterprozedur eine Klasse, eine Struktur, ein Modul oder eine Schnittstelle sein muss und keine Quelldatei, kein Namespace, keine Prozedur und kein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen (Visual Basic).

Sub-Prozeduren weisen standardmäßig öffentlichen Zugriff auf. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen.

Regeln

  • Implementierung. Wenn die Prozedur das Implements-Schlüsselwort verwendet, muss auf die Class-Anweisung oder die Structure-Anweisung der enthaltenden Klasse oder Struktur direkt eine Implements-Anweisung folgen. Die Implements-Anweisung muss jede in implementslist angegebene Schnittstelle enthalten. Der Name, mit dem eine Schnittstelle die Sub definiert (in definedname), muss jedoch nicht mit dem Namen dieser Prozedur (in name) übereinstimmen.

Verhalten

  • Beenden einer Prozedur. Wenn die Sub-Prozedur zum aufrufenden Code zurückkehrt, wird die Ausführung mit der Anweisung fortgesetzt, die auf die aufrufende Anweisung folgt.

    Die Exit Sub-Anweisung und die Return-Anweisung führen zur unmittelbaren Beendigung einer Sub-Prozedur. In der Prozedur können beliebig viele Exit Sub-Anweisungen und Return-Anweisungen an beliebiger Stelle vorkommen, und Sie können Exit Sub-Anweisungen und Return-Anweisungen kombinieren.

    Im folgenden Beispiel wird das Beenden einer Sub-Prozedur veranschaulicht.

    Sub mySub(ByVal q As String)
        Return
    End Sub 
    
  • Aufrufen einer Prozedur. Wie eine Function-Prozedur ist auch eine Sub-Prozedur eine eigene Prozedur, die Parameter akzeptieren und eine Reihe von Anweisungen ausführen kann. Im Gegensatz zu einer Function-Prozedur, die einen Wert zurückgibt, kann eine Sub-Prozedur jedoch nicht in einem Ausdruck verwendet werden.

    Sie rufen eine Sub-Prozedur in einer Anweisung über den Prozedurnamen auf, gefolgt von der Argumentliste in Klammern. Wenn keine Argumente angegeben werden, können Sie die Klammern auch auslassen. Die Lesbarkeit des Codes wird jedoch verbessert, wenn Sie die Klammern immer einfügen.

    Optional können Sie auch die Call-Anweisung verwenden, um eine Sub-Prozedur aufzurufen. Dadurch kann die Lesbarkeit des Codes verbessert werden.

Problembehandlung

Reihenfolge der Ausführung. Visual Basic ändert zuweilen die Anordnung arithmetischer Ausdrücke, um die interne Effizienz zu erhöhen. Wenn die Argumentliste Ausdrücke enthält, die andere Prozeduren aufrufen, können Sie daher nicht darauf vertrauen, dass sie in einer bestimmten Reihenfolge aufgerufen werden.

Beispiel

Im folgenden Beispiel werden mit der Sub-Anweisung Name, Parameter und Code definiert, die den Rumpf einer Sub-Prozedur bilden.

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

Siehe auch

Aufgaben

Gewusst wie: Verwenden einer generischen Klasse (Visual Basic)

Problembehandlung bei Prozeduren (Visual Basic)

Gewusst wie: Erstellen einer partiellen Methode (Visual Basic)

Referenz

Implements-Anweisung

Function-Anweisung (Visual Basic)

Parameterliste (Visual Basic)

Dim-Anweisung (Visual Basic)

Call-Anweisung (Visual Basic)

Of-Klausel (Visual Basic)

Konzepte

Parameterarrays (Visual Basic)

Partielle Methoden (Visual Basic)