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 für das Öffnungsargument eine Zeichenkette übergeben kann, lassen sich hier natürlich 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 pflückt man diese Folge aneinandergereihter Zeichenketten wieder auseinander? Die erste Idee ist - ganz klar - ein handprogrammierter Parser, der den Text Stück für Stück 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 nämlich 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 anschließend wie gewünscht:

...

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-2010 André Minhorst Alle Rechte vorbehalten.