Sub-Anweisung (Visual Basic)

Aktualisiert: November 2007

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

  • attributelist
    Optional. Siehe Attributliste.

  • Partial
    Optional. Gibt die Definition einer partiellen Methode an. Weitere Informationen finden Sie unter Partielle Methoden.

  • accessmodifier
    Optional. Einer der folgenden Werte ist möglich:

    Siehe 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. Siehe Namen deklarierter Elemente.

  • 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. Siehe Parameterliste.

  • 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 verfügt über folgende Syntax und folgende Bestandteile:

    interface.definedname

    Bestandteil

    Beschreibung

    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.

  • 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

    Bestandteil

    Beschreibung

    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.

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

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

Verfahren zur Problembehandlung

Gewusst wie: Erstellen einer partiellen Methode (Visual Basic)

Konzepte

Parameterarrays

Partielle Methoden

Referenz

Implements-Anweisung

Function-Anweisung (Visual Basic)

Parameterliste

Dim-Anweisung (Visual Basic)

Call-Anweisung (Visual Basic)

Of