Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1788to1792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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
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).
Anzeige
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?
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
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.
Anzeige
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

292 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige