VBA Tipp: Split-Funktion mit mehreren Trennzeichen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Mit der Access-internen Split-Funktion kann ich eine Zeichenfolge (String) anhand nur eines Trennzeichens in einzelne Zeichenfolgen zerlegen, und die einzelnen Zeichenfolgen in ein Datenfeld (Array) einlesen.
Ich möchte aber eine Zeichenfolge anhand mehrerer verschiedener Trennzeichen zerlegen.

Lösung

Das geht mit der folgenden Funktion, die in einem globalen Modul hinterlegt wird:

Public Function Multisplit(Ausdruck As String, Trennzeichen As String) As Variant
 
 'Split-Funktion mit mehreren Trennzeichen
 'Quelle: http://www.dbwiki.net/
 
 Dim Buchstabe As String
 Dim Einzeltrennzeichen As String
 Dim Teilstring() As String
 Dim i As Integer
 Dim j As Integer
 Dim z As Integer
 Dim bolSpeichern As Boolean
 Dim bolTrennzeichen As Boolean
 
 'Initialisierung
 z = 0
 ReDim Preserve Teilstring(z)
 
 'Ausdruck zeichenweise durchlaufen
 For i = 1 To Len(Ausdruck)
 
   Buchstabe = Mid(Ausdruck, i, 1)
 
   'Standardwert setzen
   bolSpeichern = True
 
   'Trennzeichen zeichenweise durchlaufen
   For j = 1 To Len(Trennzeichen)
 
     'einzelnes Trennzeichen auslesen
     Einzeltrennzeichen = Mid(Trennzeichen, j, 1)
 
     'wenn der Buchstabe dem Einzeltrennzeichen entspricht
     If Buchstabe = Einzeltrennzeichen Then
 
       If bolTrennzeichen = False Then
 
         'neuen Teilstring beginnen (= Array erweitern)
         z = z + 1
         ReDim Preserve Teilstring(z)
 
         bolTrennzeichen = True
 
       End If
 
       'Buchstaben ignorieren
       bolSpeichern = False
 
     End If
 
   Next j
 
   If bolSpeichern = True Then
 
     'Buchstabe in Teilstring speichern
     Teilstring(z) = Teilstring(z) + Buchstabe
 
     bolTrennzeichen = False
 
   End If
 
 Next i
 
 'Rückgabewert
 Multisplit = Teilstring
 
End Function

Aufruf

Die Funktion wird wie die Split-Funktion verwendet:

 Dim strArr() As String
 Dim Teststring As String
 Dim varTeilstring As Variant
 
 Teststring = "Wort1-(Wort2 )/ Wort3"
 
 'Einzelwerte in Array strArr einlesen
 'nach diesen Trennzeichen soll getrennt werden: "- ()/"
 strArr = Multisplit(Teststring, "- ()/")
 
 'Array strArr auslesen, Einzelwerte im Direktfenster anzeigen
 For Each varTeilstring In strArr
   Debug.Print varTeilstring
 Next


Der Code wurde in Access 2003 erstellt.