Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

senkrechte Trennlinie in Listbox einfüge

Forumthread: senkrechte Trennlinie in Listbox einfüge

senkrechte Trennlinie in Listbox einfüge
08.11.2020 15:22:21
reiner
hallo Leute,
eine Listbox wird nach vorgegebenen Auswahlkriterien befüllt:
Zeile | Land | Stadt | Breite N/S | Länge O/W | Zeitzone
With lstSuchfunktion
.ColumnWidths = "35;180;190;65;20;65;20;15;40"
End With
    Do
.AddItem RnGF.Offset(0, 0).Address 'Zeilennummer
Zeilennummer = Mid(RnGF.Offset(0, 0).Address, 4) '$-Zeichen und Buchstaben entfernen
.List(.ListCount - 1, 0) = Zeilennummer
.List(.ListCount - 1, 1) = RnGF.Offset(0, 0).Value 'Land
.List(.ListCount - 1, 2) = RnGF.Offset(0, 1).Value 'Stadt
.List(.ListCount - 1, 3) = RnGF.Offset(0, 3).Text 'Breite
.List(.ListCount - 1, 4) = RnGF.Offset(0, 4).Value 'N / S
.List(.ListCount - 1, 5) = RnGF.Offset(0, 6).Text 'Länge
.List(.ListCount - 1, 6) = RnGF.Offset(0, 7).Text 'O / W
.List(.ListCount - 1, 7) = "Zz: " & RnGF.Offset(0, 8).Value 'Zeitzone
Loop While Not RnGF Is Nothing And strFirst  RnGF.Address
Für eine eindeutige Zuordnung würde ich gern senkrechte Linien zwischen den einzelnen Spalten in die Listbox einfügen, was aber nach meiner Kenntnis mit den bestehenden Einstellmöglichkei-ten der LB nicht realisierbar ist.
Kennt jemand eine Möglichkeit in den oben unter ".ColumnWidths" aufgeführten Abständen eine senkrechte Linie z. B. bei jedem Durchlauf der Do .. Loop -Schleife mit dem Zeichen „|“ auf der Tastatur unten links einzufügen?
Wie z.B. :
   Do
.AddItem RnGF.Offset(0, 0).Address 'Zeilennummer
Zeilennummer = Mid(RnGF.Offset(0, 0).Address, 4) '$-Zeichen und Buchstaben entfernen
.List(.ListCount - 1, 0) = Zeilennummer
.ColumnWidths =35	= „|“
.List(.ListCount - 1, 1) = RnGF.Offset(0, 0).Value 'Land
.ColumnWidths = 180 =  „|“
.List(.ListCount - 1, 2) = RnGF.Offset(0, 1).Value 'Stadt
usw.
.List(.ListCount - 1, 3) = RnGF.Offset(0, 3).Text 'Breite
usw.
.List(.ListCount - 1, 4) = RnGF.Offset(0, 4).Value 'N / S
.List(.ListCount - 1, 5) = RnGF.Offset(0, 6).Text 'Länge
.List(.ListCount - 1, 6) = RnGF.Offset(0, 7).Text 'O / W
.List(.ListCount - 1, 7) = "Zz: " & RnGF.Offset(0, 8).Value 'Zeitzone
Loop While Not RnGF Is Nothing And strFirst  RnGF.Address
mfg
reiner
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 17:08:08
Nepumuk
Hallo Reiner,
versuch es mal so:
Do
    .AddItem RnGF.Row 'Zeilennummer
    .List(.ListCount - 1, 1) = "| " & RnGF.Offset(0, 0).Value 'Land
    .List(.ListCount - 1, 2) = "| " & RnGF.Offset(0, 1).Value 'Stadt
    .List(.ListCount - 1, 3) = "| " & RnGF.Offset(0, 3).Text 'Breite
    .List(.ListCount - 1, 4) = "| " & RnGF.Offset(0, 4).Value 'N / S
    .List(.ListCount - 1, 5) = "| " & RnGF.Offset(0, 6).Text 'Länge
    .List(.ListCount - 1, 6) = "| " & RnGF.Offset(0, 7).Text 'O / W
    .List(.ListCount - 1, 7) = "| " & "Zz: " & RnGF.Offset(0, 8).Value 'Zeitzone
Loop Until strFirst = RnGF.Address

Die zusätzlichen Zeichen musst du so abschneiden:
With ListBox1
    TextBox1.Text = Mid$(.List(.ListIndex, 1), 4)
End With

Gruß
Nepumuk
Anzeige
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 17:32:57
reiner
hallo Nepumuk,
erstmal vielen Dank für den Vorschlag; es wird das Symbol "|" vor den jeweiligen Eintrag eingefügt.
Es ist aber wohl nicht möglich das Symbol entsprechend der in ".ColumnWidths" aufgeführten Spaltenbreite einzufügen, das ist schade.
Ich markiere die Anfrage daher vorerst noch als ungelöst, werde aber wohl damit leben müssen dass meine Vorstellung nicht verwirklicht werden kann.
Nochmals vielen Dank
reiner
Anzeige
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 18:35:47
onur
Wenn du willst, dass der Strich immer an der selben Stelle gesetzt wird, musst du die Schriftart der Listbox auf eine Monospace-Schriftart setzen (z.B. Typewriter_Condensed).
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 18:51:43
reiner
hallo onur,
ich habe die Schriftart wie von dir empfohlen auf "Typewriter_Condensed" umgestellt, aber wie stelle ich nun die senkrechten Trennstriche "immer an der selben Stelle" dar?
Ich muss doch die Position der Trennstriche vorgeben, aber wie?
Anzeige
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 18:58:35
onur
Statt z.B.
.List(.ListCount - 1, 3) = "Hallo"
das
.List(.ListCount - 1, 3) = "|" & "Hallo"
Immer (ausser bei Spalte 1) am Anfang jedes Eintrages.
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 18:59:33
onur
Dan brauchst du nicht einmal Monospace-Fonts.
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 19:02:48
reiner
hallo onur,
schau mal auf den Beitrag von Nepumuk 08.11.2020 17:08:08
Anzeige
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 19:06:56
onur
Stimmt, sehe ich jetzt auch,
Du willst sie wohl immer am Ende hinzufügen?
Das wäre unnötig viel komplizierter.
Du könntest aber auch mehrere Listboxen nehmen und sie per VBA verknüpfen, so dass, wenn ein Eintrag ausgewählt wird, alle anderen Listboxen mitziehen.
AW: senkrechte Trennlinie in Listbox einfüge
08.11.2020 23:36:06
Daniel
HI
meines wissens nach ist es nicht möglich, so einen Spaltentrenner einzufügen.
der Workaround wäre, dass keinen Spaltentrenner einfügst, sondern echte Listboxspalten und diese mit dem Text "|" füllst sowie die Spaltenbreite in den ColumnWidth entsprechend schmal einstellst.
problem dabei ist, dass sich damit die Anzahl der Spalten verdoppelt (fast) und wenn du über 10 Spalten kommst, kannst du nicht mehr mit .AddItem arbeiten kannst, sondern die Daten über ein Array in die Listbox schreiben musst.
das geht aber auch im Nachgang, wenn du die Listbox befüllt hast, danach diesen Code ausführen:
dim arr1, arr2
dim z as long
dim s as long
arr1 = Listbox1.List
redim arr2(ubound(arr1, 1), 2 * ubound(arr1, 2) - 1)
for z = 0 to ubound(arr1, 1)
for s = 0 to ubound(arr1, 2) - 1
arr2(z, s * 2) = arr1(z, s)
arr2(z, s * 2 + 1) = "|"
next
arr2(z, s * 2) = arr1(z, s)
next
Listbox1.List = arr2
die ColumnWidth musst du halt entsprechend einstellen.
oder noch einfacher: füge den Trennstrich ab der 2. Spalte am Anfang jedes Textes hinzu.
wenn du die Werte verarbeitest, kannst du ihn wieder entfernen.
 .List(.ListCount - 1, 1) = "|" & RnGF.Offset(0, 0).Value 'Land
Gruß Daniel
Anzeige
Danke dir sowie "Nepumuk" und "onur"
09.11.2020 10:23:06
reiner
hallo Daniel,
ich muss mich damit abfinden dass Excel keine Möglichkeit bietet einen Trennstrich über die Einstellungen einzufügen.
Ich habe mich nun entschieden deinen Vorschlag (wie auch schon entsprechend von "Nepumuk" und "onur" angeregt) umzusetzen und in einer nachfolgenden Abarbeitung des Programmcodes den Trennstrich wieder zu entfernen; das funktioniert.
 .List(.ListCount - 1, 1) = "|" & RnGF.Offset(0, 0).Value 'Land
danke für deinen Beitrag
reiner
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Senkrechte Trennlinien in einer Listbox einfügen


Schritt-für-Schritt-Anleitung

Um senkrechte Trennlinien in einer Listbox in Excel einzufügen, kannst du den folgenden VBA-Code verwenden. Dieser Code fügt das Zeichen | zwischen den Einträgen ein, um die Spalten optisch zu trennen.

Do
    .AddItem RnGF.Row ' Zeilennummer
    .List(.ListCount - 1, 1) = "|" & RnGF.Offset(0, 0).Value ' Land
    .List(.ListCount - 1, 2) = "|" & RnGF.Offset(0, 1).Value ' Stadt
    .List(.ListCount - 1, 3) = "|" & RnGF.Offset(0, 3).Text ' Breite
    .List(.ListCount - 1, 4) = "|" & RnGF.Offset(0, 4).Value ' N / S
    .List(.ListCount - 1, 5) = "|" & RnGF.Offset(0, 6).Text ' Länge
    .List(.ListCount - 1, 6) = "|" & RnGF.Offset(0, 7).Text ' O / W
    .List(.ListCount - 1, 7) = "Zz: " & RnGF.Offset(0, 8).Value ' Zeitzone
Loop While Not RnGF Is Nothing And strFirst <> RnGF.Address

Achte darauf, dass du die Schriftart der Listbox auf eine Monospace-Schriftart wie Typewriter_Condensed einstellst, damit die Trennlinien gleichmäßig erscheinen.


Häufige Fehler und Lösungen

  1. Trennlinien erscheinen nicht richtig
    Wenn die Trennlinien nicht an der gewünschten Stelle erscheinen, stelle sicher, dass du eine Monospace-Schriftart verwendest, sodass alle Zeichen gleich breit sind.

  2. Die Listbox zeigt nicht alle Einträge an
    Wenn du über 10 Spalten hast, kann es sein, dass du nicht mehr mit .AddItem arbeiten kannst. In diesem Fall solltest du die Daten in ein Array schreiben und dann die Listbox damit füllen.


Alternative Methoden

Eine alternative Methode ist, echte Listboxspalten zu verwenden, um eine Trennlinie zwischen Zeilen zu simulieren. Du kannst die Spaltenbreite so einstellen, dass sie schmal genug ist, um den Eindruck einer Trennlinie zu vermitteln.

.ColumnWidths = "35;5;180;5;190;5;65;5;20;5;65;5;15;5;40"

Hierbei musst du möglicherweise die Spalten verdoppeln, um den Trennstrich zwischen den einzelnen Spalten zu simulieren.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Listbox mit Trennlinien befüllen kannst:

With ListBox1
    .AddItem "1" & "|" & "Deutschland" & "|" & "Berlin" & "|" & "52.52" & "|" & "N" & "|" & "13.41" & "|" & "O" & "|" & "CET"
    .AddItem "2" & "|" & "Frankreich" & "|" & "Paris" & "|" & "48.85" & "|" & "N" & "|" & "2.35" & "|" & "O" & "|" & "CET"
End With

Hierbei wird die Trennlinie durch das Zeichen | erzeugt, was die Lesbarkeit der Liste verbessert.


Tipps für Profis

  • Verwende Arrays: Wenn du viele Daten hast, ist es effizienter, diese in einem Array zu speichern und dann die Listbox einmalig zu befüllen.
  • Schriftart anpassen: Achte darauf, dass die Schriftart in der Listbox auf eine Monospace-Schriftart gesetzt ist, um eine korrekte Anzeige der Trennlinie zu garantieren.
  • Dynamische Anpassung: Du kannst die Spaltenbreite dynamisch anpassen, wenn sich die Größe der Listbox ändert, um die Darstellung zu optimieren.

FAQ: Häufige Fragen

1. Kann ich die Trennlinien auch farbig gestalten?
Leider unterstützt die Listbox keine farbigen Trennlinien. Du kannst jedoch mit Hintergründen oder alternativen Steuerelementen arbeiten.

2. Warum funktionieren meine Änderungen nicht?
Stelle sicher, dass du den Code im richtigen Kontext ausführst und die Listbox korrekt referenziert ist.

3. Gibt es eine Limitierung bei der Anzahl der Einträge?
Ja, wenn du über viele Spalten und Einträge verfügst, kann die Performance der Listbox beeinträchtigt werden. Verwende in diesem Fall Arrays, um die Daten effizient zu verwalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige