Tipp 1.18 - ParamArray verwenden
Wie kann ich eine unbestimmte Anzahl an Argumenten einer Funktion übergeben?
Das letzte Argument einer Argumentenliste in einer Funktion, Prozedur- oder Declare-Anweisung kann mit dem Schlüsselwort ParamArray versehen werden. Ein ParamArray wird verwendet wie die Schlüsselwörter Optional, ByVal oder ByRef. Mit dem Unterschied, dass ParamArray nur alleine und nicht kombiniert verwendet werden darf und immer vom Datentyp Variant ist.
Der Umstand, dass das ParamArray nur dem letzten Argument vorangestellt werden darf, macht schon dessen optionalen Charakter deutlich. Das ParamArray wird zwar ähnlich wie ein Array deklariert, allerdings wird beim Funktionsaufruf kein Array übergeben, sonst könnte man auch genauso gut ein herkömmliches Argument von Typ Variant verwenden. Vielmehr wird die Argumentenliste einfach nach hinten erweitert (durch Kommas getrennt).
Die Anzahl der übergebenen Argumente, also die Dimensionsgrenzen des ParamArray, kann man durch die Funktionen UBound und LBound ermitteln.
Die Beispielfunktion
Public Function AddNumbers(ParamArray paWerte()) _ As Double Dim lLoop As Long Dim dblSum As Double For lLoop = LBound(paWerte) To UBound(paWerte) dblSum = dblSum + paWerte(lLoop) Next lLoop AddNumbers = dblSum End Function
Der Aufruf
Public Sub TestAddNumbers() ' Angabe mit verschiedener Werten Debug.Print AddNumbers(10.5, 12.9, 19.2, _ 20, 31, 10) ' Ohne Angabe von Werten Debug.Print AddNumbers() End Sub