VBA ParamArray-Auflistungen

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.

Fehlermeldung beim Hinzufügen von mehr als 60 Parametern

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.


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar