Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Wenn Sie unter VBA eine Prozedur oder eine Funktion definieren, enthält diese immer eine feste Anzahl von Parametern. Diese können Sie auch als optional deklarieren, sodass tatsächlich weniger Werte übergeben werden als Parameter vorhanden sind. Was aber, wenn Sie den Spieß einmal umdrehen und mehr Werte als vorhandene Parameter übergeben wollen – und das auch noch flexibel Dann kommt die VBA ParamArray-Auflistung ins Spiel. In diesem Beitrag schauen wir uns an, was Sie damit machen können.
Parameter und optionale Parameter
Normalerweise legen Sie für eine Prozedur oder Funktion, nachfolgend als Routine bezeichnet, die Anzahl der Parameter genau fest:
Public Sub BeispielParameter(strText As String, lngZahl As Long) Debug.Print strText Debug.Print lngZahl End Sub
Der Aufruf erfolgt dann mit der exakten Zahl an Parametern:
BeispielParameter "Beispieltext", 123
Sie können auch optionale Parameter definieren, die Sie mit dem Schlüsselwort Optional versehen und die sich immer am Ende der Parameterliste befinden müssen:
Public Sub BeispielOptionaleParameter( strText As String, Optional lngZahl As Long) Debug.Print strText Debug.Print lngZahl End Sub
Diese Prozedur können Sie so aufrufen:
BeispielOptionaleParameter "Beispieltext", 123
Sie können den zweiten Parameter aber auch weglassen:
BeispielOptionaleParameter "Beispieltext"
Die Routine verwendet dann einen Standardwert, den Sie angeben können oder auch nicht. Wenn Sie ihn nicht angeben, wird bei String-Variablen eine leere Zeichenkette, bei Zahlen der Wert 0 und bei Boolean-Werten False angenommen.
Flexible Anzahl an Parametern mit VBA ParamArray
Wenn Sie eine flexible Anzahl an Parametern übergeben wollen, wozu brauchen wir dann mehr als optionale Parameter Davon können wir schließlich so viele definieren, wie wir benötigen:
Public Sub VieleParameter(Optional lng1 As Long, Optional lng2 As Long, Optional lng3 As Long, Optional lng4 As Long, Optional lng5 As Long, Optional lng6 As Long) Debug.Print lng1, lng2, lng3, lng4, lng5, lng6 End Sub
Allerdings stimmt das nicht so ganz, denn nach unseren Tests können Sie maximal 60 Parameter für eine Routine definieren – anderenfalls erscheint eine Meldung wie in Bild 1. Und damit kommen wir zum ParamArray.
Bild 1: Fehlermeldung beim Hinzufügen von mehr als 60 Parametern
Das Schlüsselwort ParamArray
Sie können in einer Routine genau einen Parameter mit dem Schlüsselwort ParamArray ausstatten. Dabei muss es sich zwingend um den letzten Parameter der Routine handeln.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo