Home > Artikel > Ausgabe 6/2014 > Arrays mit Split und Join

Arrays mit Split und Join

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

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

Dann springt die Prozedur mit der Methode MoveLast zum letzten Datensatz des Recordsets und liest mit der Recordcount-Eigenschaft die Anzahl der enthaltenen Datensätze aus.

Das Ergebnis landet in der Variablen lngAnzahl ­– und zwar um eins verkleinert, da der Index 0-basiert ist.

Das Springen auf den letzten Datensatz ist nötig, da sonst die Anzahl der Datensätze möglicherweise nicht korrekt bestimmt wird.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!