Arrays mit Split und Join

Für die Arbeit mit Arrays gibt es zwei interessante Funktionen, die Ihnen möglicherweise einige manuelle zu programmierende Schritte abnehmen. Join erlaubt es, die Inhalte eines eindimensionalen Arrays in einer einzigen Zeichenkette zusammenzusetzen, wobei Sie noch angeben können, ob die einzelnen Elemente durch ein oder mehrere Zeichen getrennt werden sollen. Und die Split-Funktion erstellt ein neues Array auf Basis einer in einer Zeichenketten enthaltenen Auflistung von Texten. Einzige Bedingung: Es muss ein einheitliches Trennzeichen zwischen den Einträgen vorliegen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1406_ArraysMitSplitUndJoin.mdb.

Die Join-Funktion

Die Join-Funktion erwartet zwei Parameter: den Variablennamen des Arrays sowie als optionalen Parameter die Zeichenkette, die hinter jedem Element angehängt werden soll. Sie können diese Funktion auf die Schnelle im Direktfenster des VBA-Editors testen (zu aktivieren mit der Tastenkombination Strg + G):

  Join(Array("Wert1","Wert2","Wert3"),"|")
Wert1|Wert2|Wert3

In diesem Beispiel setzt die Array-Funktion aus den drei Zeichenketten Wert1, Wert2 und Wert3 ein Array zusammen. Dieses nimmt die Join-Funktion gleich wieder auseinander und fügt die einzelnen Elemente zu einer einzigen Zeichenkette zusammen. Dabei verwendet sie die mit dem zweiten Parameter übergebene Zeichenkette, hier das Pipe-Zeichen (|) als Trennzeichen, das zwischen die einzelnen Elemente geschrieben wird.

Ein aufwendigeres Beispiel finden Sie in Listing 1. Hier sollen alle Artikelnamen durch Kommata voneinander getrennt im Direktfenster ausgegeben werden. Dazu öffnet die Prozedur zunächst eine Recordset-Gruppe auf Basis der Tabelle tblArtikel, wobei jedoch nur das Feld Artikel berücksichtigt wird

Public Sub Beispiel_Join()
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     Dim strArtikel() As String
     Dim strArtikelliste As String
     Dim lngAnzahl As Long
     Set db = CurrentDb
     Set rst = db.OpenRecordset("SELECT Artikel FROM tblArtikel", dbOpenDynaset)
     rst.MoveLast
     lngAnzahl = rst.RecordCount
     ReDim strArtikel(lngAnzahl - 1)
     rst.MoveFirst
     Do While Not rst.EOF
         strArtikel(rst.AbsolutePosition) = rst!Artikel
         rst.MoveNext
     Loop
     strArtikelliste = Join(strArtikel, ", ")
     MsgBox strArtikelliste
End Sub

Listing 1: Zeichenkette aus den Elementen eines Array erstellen

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
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 →