Benannte Argumente in VBA
VBA erlaubt es, die Argumente in Aufrufen mit den Namen des zugehörigen Parameters zu kennzeichnen.
Dabei ist der Parametername aus dem Objektkatalog zu verwenden (nicht ein eventuell abweichender Parametername aus dem deutschsprachigen Handbuch).
- Sqr (Handbuch-Syntax)
Function Sqr(Zahl)
- »VBA.Math.Sqr« (Objektkatalog)
Function Sqr(Number As Double) As Double
Element von VBA.Math- Direktbereich
? Sqr( 9 )
3
? Sqr ( Number : = 9 )
3
? Sqr( Number := 9 )
3
Wie das voranstehende Beispiel zeigt, wird der Parametername dem Argument vorangestellt, zwischen beiden stehen die beiden lexikalischen Einheiten »:« und »=«, die in der Regel als »:=« direkt hintereinander geschrieben werden.
Diese Vorgehensweise erlaubt es, bei Aufrufen mit mehreren Argumenten, die Argumente in beliebiger Reihenfolge anzugeben. Außerdem sind solche Aufrufe oft besser lesbar, weil die Bedeutung eines Arguments oft durch den Namen des Parameters erläutert wird (dies ist bei einem allgemeinen Namen wie »Number« aber nicht so).
Neue erweiterte Syntax
Die neue erweiterte Syntax drückt auch noch aus, daß hinter einem benannten Argument kein unbenanntes Argument mehr folgen darf.
- Aufrufausdruck (Syntaxdiagramm)
anonyme Liste
.----------.
---.--->| Ausdruck |---.--->
^ '----------' |
| .-. |
'-------( , )<------'
'-' benannte Liste
.------------. .-. .-. .----------.
---.--->| Bezeichner |--->( : )--->( = )--->| Ausdruck |---.--->
^ '------------' '-' '-' '----------' |
| .-. |
'-------------------------( , )<------------------------'
'-' Ausdruckliste
.-----------------------------------------------------------------------.
| |
| .--------------------------------------. |
| | | |
| .---------------. | .-. .----------------. v v
---'---.--->| anonyme Liste |---'--->( , )---.--->| benannte Liste |---'---'--->
| '---------------' '-' ^ '----------------'
| |
| |
| |
'-------------------------------------'
Ausdruck
.-------. .-. .---------------. .-.
--->| Name |--->( ( )--->| Ausdruckliste |--->( ) )--->
'-------' '-' '---------------' '-'
»VBA.DateTime.DateAdd«
Das folgende Beispiel zeigt den Aufruf der Funktion »VBA.DateTime.DateAdd«, die es erlaubt, Zeiten zu addieren. Zu dem Datum (Parametername »Date«) »2035-02-28« soll ein (Wert »1«, Parametername »Number«) Monat (Wert »m«, Parametername "Interval") addiert werden. Entsprechend werden auch die Angaben im Argument des Funktionsausdrucks gemacht. Die Reihenfolge der Angaben spielt dabei keine Rolle.
- DateAdd (Objektkatalog, vereinfacht)
Function DateAdd( Interval As String, Number As Double, Date As String )
Element von VBA.DateTime
Der Dokumentation kann man die Namen und Typen der Parameter entnehmen.
Das folgenden Beispiel zeigt einen Aufruf mit Argumenten, die durch Parameternamen benannt sind.
- Aufruf mit benannten Argumenten
? DateAdd( Date := "2035-01-31", Number := 1, Interval := "m" )
2035-02-28
(Je nach den Einstellungen der verwendeten Umgebung kann das Datumsformat der Ausgabe auch anders sein also oben zu sehen.)
Das folgenden Beispiel hat die gleiche Bedeutung wie das voranstehende Beispiel, da die Reihenfolge der Argumentangaben keine Rolle spielt, wenn alle benannt sind.
- Aufruf mit benannten Argumenten in veränderter Reihenfolge
? DateAdd( Number := 1, Interval := "m", Date := "2035-01-31" )
2035-02-28
Die Funktion kann aber weiterhin auch ohne Benennung der Argumente aufgerufen werden (wie bisher). In diesem Fall haben die drei Argumente die Standardbedeutung »Interval«, »Number« und »Date«, in dieser Reihenfolge (diese Reihenfolge kann dem Objektkatalog entnommen werden). Daher kann der Aufruf folgendermaßen auch ohne Zuordnung mit »:=« erfolgen.
- Aufruf mit unbenannten Argumenten
? DateAdd( "m", 1, "2035-01-31" )
2035-02-28
- Aussprachehinweis
- interval Aussprache: /ˈɪntɚvəl/ (c')
Übungsaufgaben
/ Übungsaufgabe
Schreiben Sie den folgenden Aufruf mit benannten Argumenten.
Schreiben Sie dann noch eine Variation der Lösung, in welcher die Reihenfolge der beiden benannten Argumente vertauscht wurde.
- Direktbereich
? VBA.Strings.Left$( "abcdefghij", 5 )
abcde
- Left (Objektkatalog) (vereinfacht)
Function Left$( Text As String, Length As Integer ) As String
Element von VBA.Strings
/ Übungsaufgabe (1)
Schreiben Sie den folgenden Aufruf mit benannten Argumenten.
- Direktbereich
? VBA.Math.Sin( 0 )
2
/ Übungsaufgabe (2)
Schreiben Sie den folgenden Aufruf mit benannten Argumenten.
Schreiben Sie dann noch eine Variation der Lösung, in welcher die Reihenfolge der benannten Argumente verändert wurde.
- Direktbereich
? VBA.Information.RGB( 2, 1, 0 )
2