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

Mehrere Parameter per ffnungsargument

Die bergabe von Parametern beim Aufruf eines Formulars erfolgt am einfachsten mit dem ffnungsargument der DoCmd.OpenForm-Methode. Leider kann man damit immer nur einen Parameter bergeben - oder etwa doch nicht?

Argumentliste

Da man fr das ffnungsargument eine Zeichenkette bergeben kann, lassen sich hier natrlich auch mehrere, durch ein bestimmtes Zeichen getrennte Zeichenfolgen bergeben. Als Trennzeichen bietet sich etwa das Semikolon an, es kann aber auch jedes andere Zeichen verwendet werden. Wichtig ist nur, dass dieses nicht in den bergebenen Zeichenketten vorkommt.

Das Problem ist nur: Wie pflckt man diese Folge aneinandergereihter Zeichenketten wieder auseinander? Die erste Idee ist - ganz klar - ein handprogrammierter Parser, der den Text Stck fr Stck untersucht und etwa in ein Array schreibt, von wo aus man leicht auf die einzelnen Elemente zugreifen kann.

Texte trennen per VBA-Funktion

Den Aufwand kann man sich aber auch sparen: Diese Aufgabe kann nmlich auch eine im Allgemeinen sehr selten verwendete VBA-Funktion namens Split bernehmen.

Das folgende Beispiel zeigt, wie es funktioniert. Der Aufruf erfolgt beispielsweise mit Aufteilen("Andr;Anja;Maja;Lena").

Public Function Aufteilen(str As String)

    Dim strTeil() As String

    Dim i As Integer

    strTeil = Split(str, ";")

    For i = LBound(strTeil) To UBound(strTeil)

        Debug.Print i, strTeil(i)

    Next i

End Function

Die Funktion Split liest alle Teile der Zeichenkette aus und schreibt sie in das String-Array strTeil. Die folgende For Next-Schleife gibt alle ermittelten Zeichenketten im Direktfenster aus.

... und jetzt mit OpenArgs

Der Einsatz mit dem ffnungsargument ist genauso einfach: Dazu verwenden Sie die Split-Funktion einfach in der Beim ffnen-Ereignisprozedur des zu ffnenden Formulars und verwenden die einzelnen Zeichenketten anschlieend wie gewnscht:

...

Dim strTeil() As String

Dim i As Integer

strTeil = Split(Me.OpenArgs, ";")

For i = LBound(strTeil) To UBound(strTeil)

    '...etwas mit den Zeichenketten machen

Next i

...

© 2003-2015 André Minhorst Alle Rechte vorbehalten.