Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können angeben, dass ein Prozedurparameter optional ist und kein Argument angegeben werden muss, wenn die Prozedur aufgerufen wird.
Optionale Parameter werden durch das Optional
Schlüsselwort in der Prozedurdefinition angegeben. Es gelten die folgenden Regeln:
Jeder optionale Parameter in der Prozedurdefinition muss einen Standardwert angeben.
Der Standardwert für einen optionalen Parameter muss ein konstanter Ausdruck sein.
Jeder Parameter, der einem optionalen Parameter in der Prozedurdefinition folgt, muss ebenfalls optional sein.
Die folgende Syntax zeigt eine Prozedurdeklaration mit einem optionalen Parameter:
Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Aufrufen von Prozeduren mit optionalen Parametern
Wenn Sie eine Prozedur mit einem optionalen Parameter aufrufen, können Sie auswählen, ob das Argument angegeben werden soll. Wenn Sie dies nicht tun, verwendet die Prozedur den standardwert, der für diesen Parameter deklariert ist.
Wenn Sie ein oder mehrere optionale Argumente in der Argumentliste weglassen, verwenden Sie aufeinander folgende Kommas, um ihre Positionen zu markieren. Im folgenden Beispielaufruf werden die ersten und vierten Argumente, jedoch nicht die zweite oder dritte Argumente angegeben:
Sub name(argument 1, , , argument 4)
Im folgenden Beispiel werden mehrere Aufrufe der MsgBox
Funktion ausgeführt.
MsgBox
verfügt über einen erforderlichen Parameter und zwei optionale Parameter.
Der erste Aufruf von MsgBox
liefert alle drei Argumente in der Reihenfolge, in der MsgBox
sie definiert. Beim zweiten Aufruf wird nur das erforderliche Argument angegeben. Beim dritten und vierten Aufruf werden das erste und dritte Argument angegeben. Im dritten Aufruf geschieht dies über die Position, im vierten Aufruf über den Namen.
MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")
Bestimmen, ob ein optionales Argument vorhanden ist
Eine Prozedur kann zur Laufzeit nicht erkennen, ob ein angegebenes Argument ausgelassen wurde oder der aufrufende Code explizit den Standardwert angegeben hat. Wenn Sie diese Unterscheidung vornehmen müssen, können Sie einen unwahrscheinlichen Wert als Standard festlegen. Die folgende Prozedur definiert den optionalen Parameter office
und testet auf seinen Standardwert, um festzustellen, QJZ
ob er im Aufruf weggelassen wurde:
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
End Sub
Wenn es sich bei dem optionalen Parameter um einen Verweistyp wie z. B. einen String
Verweistyp handelt, können Sie als Standardwert verwenden Nothing
, vorausgesetzt, dies ist kein erwarteter Wert für das Argument.
Optionale Parameter und Überladung
Eine weitere Möglichkeit zum Definieren einer Prozedur mit optionalen Parametern ist die Verwendung von Überladungen. Wenn Sie über einen optionalen Parameter verfügen, können Sie zwei überladene Versionen der Prozedur definieren, eine, die den Parameter akzeptiert, und einen ohne parameter. Dieser Ansatz wird komplizierter, da sich die Anzahl optionaler Parameter erhöht. Der Vorteil ist jedoch, dass Sie absolut sicher sein können, ob das aufrufende Programm jedes optionale Argument bereitgestellt hat.