Sie können einen String mit der Split-Funktion
(ab Visual Basic 6 verfügbar, oder auch siehe "Teile-Haberschaft")
anhand eines Trennzeichens bzw. Trennstrings zerlegen. Einen String
in gleich große Teile zerlegen kann die Split-Funktion jedoch
nicht. Für diesen Zweck finden Sie hier nun einige Funktionen und
Prozeduren.
Die Funktion SplitByLenA gibt den zerlegten String in einem Array
zurück. Im optionalen Parameter Count geben Sie an, wie viele Teile
Sie höchstens erhalten möchten. Geben sie einen Wert größer als
0 an, enthält das letzte Element mit dem Index Count des
zurückgegebenen Arrays den nicht mehr zerlegten Rest. Im optionalen
Parameter geben Sie die Untergrenze des Arrays fest (Voreinstellung
0). Sie können einen der beiden Werte der Enumeration
OptionBaseConstants oder jeden beliebigen anderen Wert angeben.
Public Enum OptionBaseConstants
OptionBase0
OptionBase1
End Enum
Public Function SplitByLenA(Str As String, ByVal Length As Long, _
Optional ByVal Count As Long, Optional OptionBase As Long) _
As Variant
Dim nParts() As String
Dim nPartsCount As Long
Dim l As Long
Dim nStart As Long
Dim nCount As Long
If Length = 0 Then
ReDim nParts(-1 To -1)
SplitByLenA = nParts
Exit Function
End If
If Count <= 0 Then
nCount = Len(Str)
Else
nCount = Count
End If
nCount = nCount + OptionBase
nPartsCount = Len(Str) \ Length
If Len(Str) Mod Length Then
nPartsCount = nPartsCount + 1
End If
ReDim nParts(OptionBase To nPartsCount - 1 + OptionBase)
nStart = 1
For l = LBound(nParts) To UBound(nParts)
If l >= nCount Then
nParts(l) = Mid$(Str, nStart)
Exit For
Else
nParts(l) = Mid$(Str, nStart, Length)
nStart = nStart + Length
End If
Next 'l
SplitByLenA = nParts
End Function
Die Funktion SplitByLenC gibt den zerlegten String in einer
Collection zurück. Der optionale Parameter Count hat die gleiche
Bedeutung wie bei der Funktion SplitByLenA, nur dass hier das letzte
Element der Collection den unzerlegten Rest des Strings enthält.
Public Function SplitByLenC(Str As String, ByVal Length As Long, _
Optional ByVal Count As Long) As Collection
Dim nParts As Collection
Dim nStart As Long
Dim nLen As Long
Dim l As Long
Dim nCount As Long
If Length = 0 Then
Set SplitByLenC = New Collection
Exit Function
End If
If Count <= 0 Then
nCount = Len(Str)
Else
nCount = Count
End If
Set nParts = New Collection
nStart = 1
nLen = Len(Str)
With nParts
Do While nStart <= nLen
l = l + 1
If l >= nCount Then
.Add Mid$(Str, nStart)
Exit Do
Else
.Add Mid$(Str, nStart, Length)
nStart = nStart + Length
End If
Loop
End With
Set SplitByLenC = nParts
End Function
Die Funktion SplitByLenD zerlegt den String und setzt die Teile
unter Einfügung eines Trennzeichens oder eines Trennstrings
(Delimiter, Voreinstellung = vbCfLf) wieder zu einem
neuen String zusammen. Im optionalen Parameter EndWithDelimiter
legen Sie fest, ob der zurückgegebene String mit dem Trennstring
enden soll (Voreinstellung True).
Public Function SplitByLenD(Str As String, ByVal Length As Long, _
Optional Delimiter As String = vbCrLf, _
Optional EndWithDelimiter As Boolean = True) As String
Dim nStart As Long
Dim nLen As Long
Dim nSplitByLenD As String
If Length = 0 Then
Exit Function
End If
nStart = 1
nLen = Len(Str)
Do While nStart <= nLen
nSplitByLenD = nSplitByLenD & Mid$(Str, nStart, Length) _
& Delimiter
nStart = nStart + Length
Loop
If Not EndWithDelimiter Then
nSplitByLenD = Left$(nSplitByLenD, Len(nSplitByLenD) _
- Len(Delimiter))
End If
SplitByLenD = nSplitByLenD
End Function
Die beiden Prozeduren SplitByLenListBox und SplitByLenComboBox
zerlegen einen String und fügen die Teile in eine ListBox bzw. in
eine ComboBox ein.
Public Sub SplitByLenListBox(ListBox As ListBox, Str As String, _
ByVal Length As Long)
Dim nStart As Long
Dim nLen As Long
Dim l As Long
ListBox.Clear
If Length = 0 Then
Exit Sub
End If
nStart = 1
nLen = Len(Str)
With ListBox
Do While nStart <= nLen
.AddItem Mid$(Str, nStart, Length)
nStart = nStart + Length
Loop
End With
End Sub
Public Sub SplitByLenComboBox(ComboBox As ComboBox, Str As String, _
ByVal Length As Long)
Dim nStart As Long
Dim nLen As Long
Dim l As Long
ComboBox.Clear
If Length = 0 Then
Exit Sub
End If
nStart = 1
nLen = Len(Str)
With ComboBox
Do While nStart <= nLen
.AddItem Mid$(Str, nStart, Length)
nStart = nStart + Length
Loop
End With
End Sub
|