Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Optionale Parameter in Funktionen und Prozeduren

Optionale Parameter sind solche Parameter, die man beim Aufruf einer Routine nicht unbedingt bergeben muss. Wie man damit umgeht und was es fr Tricks und Kniffe gibt, zeigt der vorliegende Beitrag.

Optionale Parameter des Datentyps 'String'

Die folgende Beispielfunktion enthlt drei Varianten fr Parameter: Der erste ist ein ganz normaler String-Parameter, den man beim Aufruf der Funktion auf jeden Fall angeben muss. Der zweite und dritte sind optional, wobei der dritte zustzlich einen Standardwert enthlt.

Public Function OptionaleParameter(str1 As String, Optional str2 As String = "Test", Optional str3 As String)

    Debug.Print str1

    Debug.Print str2

    Debug.Print str3

End Function

Gibt man beim Aufruf fr jeden Parameter einen Wert an, gibt diese alle bergebenen Werte aus.

Ein Fehlen des ersten Parameters bewirkt direkt beim Aufruf der Routine einen Fehler mit der Meldung 'Argument ist nicht optional'.

Wenn man fr den zweiten Parameter keinen Wert bergibt, verwendet die Routine den im Prozedurkopf hinter dem Gleichheitszeichen angegebenen Wert.

Gibt man fr den dritten Parameter keinen Wert an, wird der Parameter wie eine leere Zeichenkette behandelt.

Interpretation eines leeren optionalen Parameters

Mglicherweise soll ein leerer Parameter nicht mit dem von Access vorgesehenen Standardwert gefllt werden. Dann gibt es zwei Mglichkeiten:

Angabe eines alternativen Standardwerts im Kopf der Routine mit dem Gleichheitszeichen
berprfung des Vorhandenseins des Parameters mit der IsMissing-Methode

Die IsMissing-Funktion kann man beispielsweise wie in folgender Funktion verwenden. Wichtig ist dabei, dass fr eine anschlieende Verarbeitung des Parameterinhalts mit der IsMissing-Funktion ein Parameter mit dem Datentyp Variant zum Zuge kommt.

Public Function OptionaleStringparameter(Optional var1 As Variant)

    If IsMissing(var1) Then

        MsgBox "Der Parameter var1 wurde nicht bergeben."

    End If

End Function

Optionale Zahlenparameter

Die nachfolgende Funktion ist hnlich wie das erste Beispiel aufgebaut, verwendet allerdings drei Integer-Parameter. Das Verhalten ist ebenfalls identisch, mit dem Unterschied, dass die Funktion den dritten Parameter als 0 interpretiert, wenn er leer ist:

Public Function OptionaleZahlenparameter(int1 As Integer, Optional int2 As Integer = 2, Optional int3 As Integer)

    Debug.Print int1

    Debug.Print int2

    Debug.Print int3

End Function

Wahr oder falsch?

hnlich sieht es bei folgendem Beispiel aus, dass ausschlielich mit Boolean-Parametern operiert. Hier interpretiert die Routine den nicht bergebenen Parameter als 'Falsch':

Public Function OptionaleBooleanparameter(bol1 As Boolean, Optional bol2 As Boolean = 2, Optional bol3 As Boolean)

    Debug.Print bol1

    Debug.Print bol2

    Debug.Print bol3

End Function

Wichtig: die Reihenfolge

Optionale Parameter mssen immer hinter den Pflichtparametern stehen. Access weist direkt bei der Eingabe eines in dieser Hinsicht unzulnglichen Prozedurkopfes auf den Fehler hin.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.