Optionale Parameter
Aktualisiert: November 2007
Sie können angeben, dass ein Prozedurparameter optional ist und in Aufrufen der Prozedur kein Argument dafür bereitgestellt werden muss. Optionale Parameter werden in der Prozedurdefinition durch das Optional-Schlüsselwort gekennzeichnet. Dabei gelten folgende Regeln:
Für jeden optionalen Parameter in der Prozedurdefinition muss ein Standardwert angegeben werden.
Der Standardwert für einen optionalen Parameter muss ein konstanter Ausdruck sein.
Jeder Parameter, der in der Prozedurdefinition auf einen optionalen Parameter folgt, muss ebenfalls optional sein.
Die folgende Syntax zeigt eine Prozedurdeklaration mit einem optionalen Parameter:
Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)
Aufrufprozeduren mit optionalen Parametern
Wenn eine Prozedur mit einem optionalen Parameter aufgerufen wird, können Sie entscheiden, ob das Argument bereitgestellt werden soll. Wird das Argument nicht bereitgestellt, verwendet die Prozedur den für diesen Parameter deklarierten Standardwert.
Wenn Sie in der Argumentliste eines oder mehrere optionale Argumente auslassen, werden deren Positionen durch aufeinanderfolgende Kommas markiert. Im folgenden Beispielaufruf werden das erste und das vierte Argument bereitgestellt, das zweite und dritte jedoch nicht:
Call sub name(argument 1, , , argument 4)
Bestimmen, ob ein optionales Argument vorhanden ist
Prozeduren können zur Laufzeit nicht feststellen, ob ein bestimmtes Argument ausgelassen oder der Standardwert durch den Aufrufcode explizit bereitgestellt wurde. Wenn diese Unterscheidung wichtig ist, sollten Sie einen unwahrscheinlichen Standardwert festlegen. In der folgenden Prozedur wird der optionale office-Parameter definiert und anschließend überprüft, ob sein Standardwert QJZ im Aufruf ausgelassen 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 beim optionalen Parameter um einen Verweistyp wie String handelt, kann Nothing als Standardwert verwendet werden, sofern dieser kein zu erwartender Wert für das Argument ist.
Optionale Parameter und Überladen
Eine weitere Möglichkeit, eine Prozedur mit optionalen Parametern zu definieren, ist das Überladen. Wenn ein optionaler Parameter vorhanden ist, können Sie zwei überladene Versionen der Prozedur definieren, eine mit und eine ohne Parameter. Mit steigender Anzahl an optionalen Parametern wird dieses Konzept jedoch komplizierter. Allerdings hat es den Vorteil, dass Sie immer genau wissen, ob das aufrufende Programm jedes optionale Argument bereitgestellt hat.
Siehe auch
Aufgaben
Gewusst wie: Definieren optionaler Parameter für eine Prozedur
Gewusst wie: Aufrufen einer Prozedur mit optionalen Parametern
Gewusst wie: Bestimmen, ob ein optionaler Parameter angegeben wurde
Konzepte
Parameter und Argumente von Prozeduren
Übergeben von Argumenten als Wert und als Verweis
Argumentübergabe nach Position und Namen