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:proceduremodifiers
Optional. Einer der folgenden Werte ist möglich:MustOverride Overrides
NotOverridable Overrides
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)