ListBox

TheLuCKer

Mitglied
Hallo,

ich habe ein Problem, bzw. eine Frage. Also:
Ich habe eine ListBox. In der steht zum Beispiel:

Alfons
Alois
Berta
Brigitte
Donald
Daniel

Sie sind alle schon alphabetisch geordnet. Kann ich es ihrgentwie schaffen, nach jedem Namen, der mit einem neuen Anfangsbuchstaben beginnt, einen Strich zu ziehn, oder dass sie eine andre Farbe haben. Es soll auf jeden Fall ihrgentwie sichtilich gemacht werden, dass ein Neuer Name mit einem NEUEN ANFANGSBUCHSTABEN angefangen hat. Bitte um Antworten.

LuCKEr
 
Das kannst du ganz einfach so machen (in meinem Beispiel heißt die ListBox List1):

Die Einträge der ListBox werden nacheinander durchgegangen und wenn ein neuer Anfangsbuchstabe vorliegt, dann wird der Index des ListBox-Eintrags in einem Array gespeichert. Anschließend wird das Array ausgelesen und nach jedem im Array gespeicherten Index wird in der ListBox eine Zeile mit Strichen eingefügt.
Code:
Private Sub Trennen()
    Dim strAnfang As String
    Dim intZähler As Integer
    Dim StrVorher As String
    Dim strStrichIndex As String
    Dim intStriche() As Integer
    
    StrVorher = Mid$(List1.List(intZähler), 1, 1)
    '-----------------------------------------------
    For intZähler = 0 To List1.ListCount - 1
        strAnfang = Mid$(List1.List(intZähler), 1, 1)
        If strAnfang <> StrVorher Then
            '-->Neuer Strich hier erforderlich, Index merken:
            ArrayErweitern intStriche
            intStriche(UBound(intStriche)) = intZähler
        End If
        StrVorher = strAnfang
    Next
    '-----------------------------------------------
    If Not ArrayIstInitialisiert(intStriche) Then Exit Sub
    For intZähler = 1 To UBound(intStriche)
        List1.AddItem "-------", intZähler + intStriche(intZähler) - 1
    Next
End Sub

Private Sub ArrayErweitern(ByRef MeinArray As Variant)
'SUB: erweitert ein Array um einen Eintrag.
    If ArrayIstInitialisiert(MeinArray) Then
        ReDim Preserve MeinArray(1 To UBound(MeinArray) + 1)
    Else
        ReDim MeinArray(1 To 1)
    End If
End Sub

Private Function ArrayIstInitialisiert(ByRef MeinArray As Variant)
'FUNCTION: Prüft, ob ein Array initialisiert ist.
    On Error Resume Next
    ArrayIstInitialisiert = (UBound(MeinArray) = LBound(MeinArray))
    ArrayIstInitialisiert = (Err.Number = 0)
End Function
 
Zuletzt bearbeitet:
Zurück