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
Function-Anweisung (Visual Basic)