Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Listbox Zeilenumbruch Chr$(13) entfernen

VBA Listbox Zeilenumbruch Chr$(13) entfernen
12.02.2020 13:02:50
dominik
Hallo,
ich habe folgenden Code im Internet gefunden. Leider verstehe ich diesen nicht ganz, auch benötige ich die spalten 86 und 87 nicht. Der Code soll eine Listbox füllen aus dem Tabellenblatt Kundensuche. Das macht er auch und es funktioniert auch. Jedoch wird in der Listbox das Zeilumbruch Zeichen angezeigt.
Kann mir jemand helfen wie ich in den Code eine replacefunktion mit Chr$(13) einbauen kann. Das Zeilenumbruchzeichen taucht in der Listbox nur in Listindex also listcount 1 und 2 auf.
Private Sub CommandButton1_Click()
Dim quelle As Object
Dim daten, zeiten
Dim zeile As Long, ende As Long, spalte As Long, eintrag As Long
Dim wert
Dim kriterien
Dim eintragen As Boolean
Dim anzahl As Long  'anzahl der Listboxen
Set quelle = Worksheets("Kundensuche")
Set kriterien = CreateObject("Scripting.Dictionary")
anzahl = 7
With Kundensuche
'Listbox leeren
.ListBox1.Clear
.ListBox1.ColumnCount = anzahl  'Listbox bekommt 4 Spalten (kannst du auch ?ber die _
Einstellungen einstellen)
ende = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(ende, anzahl))
zeiten = quelle.Range(quelle.Cells(1, 86), quelle.Cells(ende, 87))
For spalte = 1 To anzahl  '+2 mehr für die Zeit wenn spalten nicht zusammenhängend sind
If .Controls("Textbox" & spalte)  "" Then
kriterien.Add spalte, .Controls("Textbox" & spalte).Value
End If
Next
If kriterien.Count = 0 Then Exit Sub
For zeile = 1 To ende
eintragen = True
For eintrag = 1 To kriterien.Count
If kriterien.keys()(eintrag - 1) > anzahl Then
wert = zeiten(zeile, kriterien.keys()(eintrag - 1) - anzahl)
Else
wert = daten(zeile, kriterien.keys()(eintrag - 1))
End If
If InStr(1, wert, kriterien.items()(eintrag - 1), vbTextCompare) = 0 Then
eintragen = False
Exit For
End If
Next
If eintragen = True Then
.ListBox1.AddItem
For i = 1 To 6
.ListBox1.List(.ListBox1.ListCount - 1, i - 1) = daten(zeile, i)
Next
Label26.Caption = ListBox1.ListCount & " Kunden gefunden" 'Anzahl der gefundenen  _
Prozeduren
End If
Next
End With
End Sub
Gruß
Dominik
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Listbox Zeilenumbruch Chr$(13) entfernen
12.02.2020 13:27:19
Matthias
Moin!
Der Code war eine Lösung für eine spezielle Exceldatei mit entsprechendem Aufbau. Damals gab es zwei verschiedene Bereiche, die ausgewertet wurden. Ich weiß nicht, ob deine Datei auch so aufgebaut ist. DA ist es meist besser, seine eigene Datei und die Probleme / Wünsche damit zu posten. Wie auch immer.
Da im Code kein Zeilenumbruch eingefügt wird, gehe ich davon aus, dass er in den Zellen steht - nur die kommen ja in die LB. Deshalb das hier
.ListBox1.List(.ListBox1.ListCount - 1, i - 1) = daten(zeile, i)

durch dashier ersetzen.
.ListBox1.List(.ListBox1.ListCount - 1, i - 1) = replace(daten(zeile, i),chr(13),"")

Ist jetzt aber ungetestet. Kann sein, dass da c#jetzt auch noch das chr(10) vorkommt. Wenn ja, dann evtl. gleich vbcrlf an Stelle von chr() verwenden. Kannst das ja vorher mal überprüfen.
VG
Anzeige
AW: VBA Listbox Zeilenumbruch Chr$(13) entfernen
13.02.2020 08:14:25
dominik
Hallo Matthias,
vielen Dank für deine Rückmeldung. Es funktioniert wie gewünscht. Ich hatte es ähnlich versucht mit replace und VBA.chr$(13), "", was allerdings nicht funktioniert hat. Deine Lösung klappt so wie es sollte , Danke.
Gruß
dominik
;
Anzeige
Anzeige

Infobox / Tutorial

Zeilenumbruch in VBA Listbox entfernen


Schritt-für-Schritt-Anleitung

Um das Zeilenumbruchzeichen Chr$(13) aus einer VBA Listbox zu entfernen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen. Diese Anleitung geht davon aus, dass Du bereits ein grundlegendes Verständnis von VBA in Excel hast.

  1. Öffne die Excel-Datei, die das VBA-Projekt enthält.

  2. Öffne den Visual Basic for Applications Editor (Alt + F11).

  3. Suche das Modul mit dem Code, der die Listbox befüllt.

  4. Ersetze die Zeile, die die Listbox befüllt, durch die Replace-Funktion, um Chr$(13) zu entfernen:

    .ListBox1.List(.ListBox1.ListCount - 1, i - 1) = Replace(daten(zeile, i), Chr(13), "")
  5. Speichere den Code und führe das Makro aus, um zu testen, ob das Zeilenumbruchzeichen entfernt wurde.


Häufige Fehler und Lösungen

  • Fehler: Listbox bleibt leer

    • Lösung: Stelle sicher, dass die Datenquelle korrekt ist und dass die Listbox-Initialisierung richtig erfolgt.
  • Fehler: Chr(13) wird nicht entfernt

    • Lösung: Überprüfe, ob in der Zelle möglicherweise auch Chr(10) (Zeilenumbruch) vorhanden ist. In diesem Fall könntest Du die Zeile so anpassen:
    .ListBox1.List(.ListBox1.ListCount - 1, i - 1) = Replace(Replace(daten(zeile, i), Chr(13), ""), Chr(10), "")

Alternative Methoden

Wenn Du nicht nur Chr$(13), sondern auch andere Zeilenumbruchzeichen entfernen möchtest, kannst Du eine Funktion erstellen, die sämtliche unerwünschten Zeichen abfängt. Hier ist ein einfaches Beispiel:

Function CleanText(text As String) As String
    CleanText = Replace(Replace(text, Chr(13), ""), Chr(10), "")
End Function

Verwende die Funktion dann in Deinem Code:

.ListBox1.List(.ListBox1.ListCount - 1, i - 1) = CleanText(daten(zeile, i))

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du den Code anpassen kannst:

Private Sub CommandButton1_Click()
    Dim quelle As Object
    Dim daten
    Dim zeile As Long
    Dim anzahl As Long
    Set quelle = Worksheets("Kundensuche")
    anzahl = 7
    With Kundensuche
        .ListBox1.Clear
        .ListBox1.ColumnCount = anzahl
        daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(ende, anzahl))
        For zeile = 1 To UBound(daten)
            .ListBox1.AddItem
            For i = 1 To anzahl
                .ListBox1.List(.ListBox1.ListCount - 1, i - 1) = CleanText(daten(zeile, i))
            Next
        Next
    End With
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Teste Deinen Code mit verschiedenen Daten, um sicherzustellen, dass alle Zeilenumbruchzeichen entfernt werden.
  • Nutze Debugging-Tools in VBA, um die Werte der Variablen während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich auch andere unerwünschte Zeichen entfernen?
Antwort: Du kannst die Replace-Funktion mehrmals in einer Funktion kombinieren, um mehrere Zeichen gleichzeitig zu entfernen.

2. Frage
Welche Excel-Version benötige ich für diesen Code?
Antwort: Der Code funktioniert in Excel-Versionen, die VBA unterstützen, typischerweise Excel 2007 und neuer.

3. Frage
Kann ich auch vbCrLf verwenden?
Antwort: Ja, vbCrLf ist eine Kombination aus Chr(13) und Chr(10) und kann verwendet werden, um Zeilenumbrüche zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige