Die Split-Funktion für Word 97
Eine der nützlichen Funktionen zum Teilen eines Strings in einzelne Teile und anschließend in ein Array laden ist die Split-Funktion. Leider steht diese erst ab der Version Word 2000 zur Verfügung.
Bis dahin muss man sich mit einer selbstgestrickten Lösung behelfen. Aber auch ggf. in späteren Versionen kann diese Lösung nützlich sein.
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
Function SplitA(ByVal strExpression As Variant, _
Optional ByVal strZeichen As Variant = " ") As Variant()
'Splitfunktion selbst erstellt
'gleiche Funktionalität wie die Split-Funktion ab Word 2000
'eingeschränkt durch untergeodnete Zeichenfolgen (Limit)
'und eingeschränkt durch die Angabe des Vergleichs (Compare)
Dim strArray() As Variant
Dim Zahl As Long
Dim i As Long
Dim strErg As Variant
Dim strVar As Variant
Zahl = 0
On Error Resume Next
If InStr(1, strExpression, strZeichen) <> 0 Then
For i = 0 To (Len(strExpression))
strVar = Left(strExpression, Len(strExpression) - (Len(strExpression) - 1))
If strVar <> strZeichen Then
strExpression = (Right(strExpression, Len(strExpression) - 1))
strErg = strErg & strVar
Else
ReDim Preserve strArray(Zahl)
If IsEmpty(strErg) Then strErg = ""
strArray(Zahl) = strErg
Zahl = Zahl + 1
strErg = ""
strExpression = Right(strExpression, Len(strExpression) - 1)
End If
Next i
ReDim Preserve strArray(Zahl)
strArray(Zahl) = strErg
End If
SplitA = strArray
End Function
Die Funktion selbst gibt das neue Array zurück. Alle Einzelwerte sind als Element des Array verfügbar. Diese Funktion ist nur für eindimensionale Array gedacht.
Der gesamte String wird immer bis zum nächsten Vorkommen des angegebenen Zeichen aufgeteilt und in ein Element eines temoprären Arrays gespeichert. Das temporäre Array wird jedesmal wieder neu dimensioniert ohne die vorhandenen Werte zu verlieren. Zum Schluß wird das temporäre Array der Funktion selbst zugewiesen.
Ab der Version Word 2000 könne Sie auch mit vorgegebenen Funktion arbeiten:
001
002
003
004
005
006
007
008
009
010
011
Sub Array_Split()
Dim Zeile As String
Dim strA() As String
Zeile = "Dies wird als ein Mustertext gewertet und wird in einzelne Worte zerlegt!"
strA = Split(Zeile, " ")
End Sub
In dem neuen Array strA sind alle Wörter des Beispielsatzes als einzelnes Element gespeichert. So hätte strA(1) den Wert "wird" usw.
Das Gegenstück zum Split ist der Befehl Join. Hier werden die Elemente des Array mit dem angegebenen Zeichen zwischen den Elementen als String zusammengefügt:
001
002
003
004
005
006
007
008
009
010
011
012
013
014
Sub Array_Split()
Dim Zeile As String
Dim NeueZeile As String
Dim strA() As String
Zeile = "Dies wird als ein Mustertext gewertet und wird in einzelne Worte zerlegt!"
strA = Split(Zeile, " ")
'die einzelen Werte des Array wieder zusammensetzen
NeueZeile = Join(strA, " ")
End Sub
In Zeile 11 wird das Array strA wieder in ein String mit Leerzeichen zwischen den Elementen zusammengefügt.
Interessante Links
Für weitere Infos bitte auf den Text klicken
Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen
Annehmen