Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
Inhaltsverzeichnis

ColumnHEads in ListBox

ColumnHEads in ListBox
05.09.2023 12:57:40
Rudi V
Hallo Zusammen,

ich habe in einem YT -Video: https://www.youtube.com/watch?v=JTHWn3_TQ0c

folgenden Code gefunden, um nach Elementen in einer Listbox zu suchen.
Jetzt möchte ich noch, dass die erste Zeile mit den Spaltenbeschriftungen hervorgehoben angezeigt wird.
Der Befehl:
.ColumnHeads = True 

Funktioniert leider nicht.

Vielen Dank im Voraus
Mfg Rudi

Private Sub UserForm_Initialize()


Me.CommandButton1.Font.Size = 10
Me.CommandButton2.Font.Size = 10

Dim lngZeile As Long
Dim lngZeileMax As Long
Dim lngz As Long
Dim tbl_Nr As Worksheet
Set tbl_Nr = ThisWorkbook.Worksheets("Geraeteliste")

With Me.Geraeteliste
.ColumnCount = 3
.ColumnHeads = True
.ColumnWidths = "100"
.Font.Size = 10
End With

With tbl_Nr
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row

For lngZeile = 1 To lngZeileMax

Me.Geraeteliste.AddItem .Range("A" & lngZeile).value
Me.Geraeteliste.Column(1, lngz) = .Range("B" & lngZeile).value
Me.Geraeteliste.Column(2, lngz) = .Range("C" & lngZeile).value
lngz = lngz + 1

Next lngZeile

End With

Me.TextBox1.Font.Size = 11
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ColumnHEads in ListBox
05.09.2023 13:13:34
Rudi V
Anbei noch der TextBox Code:

Private Sub TextBox1_Change()

'Nicht benötigte Zeilen aus der ListBox entfernen
Dim i As Integer
Dim lngLaenge As Long
Dim strText As String

Me.Geraeteliste.Clear
UserForm_Initialize
lngLaenge = Len(Me.TextBox1.value)

If Left(Me.TextBox1.value, 1) = "*" Then
strText = LCase(Replace(Me.TextBox1.value, "*", ""))
For i = Me.Geraeteliste.ListCount - 1 To 0 Step -1

If InStr(Me.Geraeteliste.List(i, 0), strText) > 0 Or _
InStr(Me.Geraeteliste.List(i, 1), strText) > 0 Or _
InStr(LCase(Me.Geraeteliste.List(i, 2)), strText) > 0 Then
Else
Me.Geraeteliste.RemoveItem i
End If

Next i

Else

For i = Me.Geraeteliste.ListCount - 1 To 0 Step -1

If Left(Me.Geraeteliste.List(i, 0), lngLaenge) = Me.TextBox1.value Or _
Left(Me.Geraeteliste.List(i, 1), lngLaenge) = Me.TextBox1.value Or _
LCase(Left(Me.Geraeteliste.List(i, 2), lngLaenge)) = LCase(Me.TextBox1.value) Then
Else
Me.Geraeteliste.RemoveItem i
End If

Next i
End If
End Sub




Oder gibt es eine Möglichkeit, zu diesem Code eine Such/Filter Möglichkeit hinzuzufügen?

Private Sub UserForm_Initialize()


Me.CommandButton1.Font.Size = 10
Me.CommandButton2.Font.Size = 10

Dim Last_Row As Integer
Last_Row = getLastRow("Geraeteliste")

With Me.Geraeteliste
.ColumnCount = 15
.ColumnHeads = True
.ColumnWidths = "100"

.RowSource = "Geraeteliste!A2:O" & Last_Row
End With

End Sub
Anzeige
AW: ColumnHEads in ListBox
05.09.2023 13:35:30
daniel
HI
Wie Gerd schon schrieb, das mit den .ColumnHeads funktioniert nur, wenn du die Listbox damit befüllst, dass du in die Eigenschaft .RowSource die Adresse eines Zellbreichs einträgst, welcher dann der Inhalt der Listbox ist. In diesem Fall wird dann die Zeile, die sich direkt über dem Zellbereich befindet, als Spaltenüberschrift verwendet.

also statt der Schleife zur Befüllung einfach in den oberen WITH-Block noch einfügen:
.RowSource = "'" & tbl_nr.name & "'!A2:C" & tbl_nr.Range("A" & .Rows.Count).End(xlUp).Row


dann kannst du den nächsten WIth-Block, in dem du das .AddItem ausführst, einfach weglassen.

Gruß Daniel
Anzeige
AW: ColumnHEads in ListBox
05.09.2023 13:50:07
onur
"Der Befehl: ".ColumnHeads = True " Funktioniert leider nicht. " Warum sollte er auch?
"folgenden Code gefunden, um nach Elementen in einer Listbox zu suchen. " ? Wie kommst du auf "suchen" ? Der Code sucht rein gar nix, er befüllt einfach die Listbox.

Wenn du die Spaltentitel anders darstellen willst als die restlichen Zeilen der Listbox, solltest du noch eine Listbox über deiner Listbox plazieren und dort nur eine Zeile (Titel) anzeigen. Dann kannst du auch eine andere Schriftart, Farbe benutzen oder die Schrift fett machen. Diese Eigenschaften gelten nun mal immer für sämtliche Zeilen der Listbox.
Anzeige
ColumnHEads in ListBox
05.09.2023 14:43:13
Alwin Weisangler
Hallo,
um eine Listbox filtern, sortieren o.ä. zu können, muss diese mit .List oder .AddItem geladen werden. Da scheitert es aber die Spaltenköpfe in der Listbox anzuzeigen.
Es gibt 2 Möglichkeiten ans Ziel zu kommen.
- Spaltennamen als Labels über der Listbox einbauen und die Spaltennamen zuweisen.
- Eine Listview verwenden.

Gruß Uwe
ColumnHEads in ListBox
06.09.2023 07:50:53
Rudi V
Alles klar,

Danke Uwe
ColumnHEads in ListBox
05.09.2023 14:10:09
daniel
eine weitere Listbox als Überschrift zu verwenden ist auch eine gute Alternative, die mit allern möglichen Befüllungsvarianten funktionert, allerdings nur solange die Listbox nicht horizontal gescrollt werden muss.
Denn es ist nicht möglich, die beiden Listboxen zeitgleich zu scrollen und dann passen die Spalten nicht mehr übereinander.

Gruß Daniel
Anzeige
AW: ColumnHEads in ListBox
05.09.2023 14:20:22
onur
Soll ja nicht scrollen, sondern nur anzeigen. Und man sollte Listboxen und die Spalten normalerweise immer so breit machen, dass man nicht horizontal scrollen muss.
ColumnHEads in ListBox
05.09.2023 14:30:53
daniel
das ist eine Empfehlung, die sich leider nicht immer umsetzen lässt.
ich finde diesen Befehlston unangemessen, wenn man nicht die konkreten Gegebenheiten kennt.
und wenn man sowieso die komplette Tabelle unverändert in die Listbox schreibt, ist RowSource sowieso einfachere Lösung und dann funktioniert auch ColumnHeads.
Gruß Daniel
AW: ColumnHEads in ListBox
05.09.2023 14:33:26
onur
OK,OK.
DU hast natürlich Recht (wie immer) und ich nicht. Wie konnte ich es wagen.....
Anzeige
ich bitte um Entschuldigung
05.09.2023 14:38:48
daniel
ich wusste nicht , dass du jemand bist, der immer Recht und das letzte Wort haben will,
dann ziehe ich meine Argumentation zurück und beuge mich deinem Willen.
Hauptsache du bist glücklich
AW: ich bitte um Entschuldigung
05.09.2023 14:50:20
onur
Wieso letztes Wort?
Es stinkt mir nur, dass du dich den Hilfesuchenden gegenüber immer sehr hilfsbereit gibst, aber deinen Helferkollegen gegenüber wie ein arroganter Narzisst auftrittst.
Selbst wenn du dich mal ihnen gegenüber kollegial gibst, kannst du dir meistens giftige Bemerkungen nicht verkneifen, die wohl beweisen sollen, dass du mehr drauf hast als der Andere.
ich bitte um Entschuldigung
05.09.2023 15:00:56
daniel
Ja, ich mag es halt nicht, wenn jemand besserwisserische Regeln vorgibt, ohne ich das Problem im Detail angeschaut zu haben.
("Eine Listbox dart nicht scrollen!"). Dann reagiere ich schon mal so.

aber es sollte doch kein Problem sein, wenn man mal die die Vor- und Nachteile der verschiedenen Lösungsmöglichkeiten gegenüberstellt.
Dann ist es einfacher zu entscheiden, für was man sich entscheidet.
Anzeige
AW: ColumnHEads in ListBox
05.09.2023 13:28:33
GerdL
Hallo Rudi,

ColumnHeads funtioniert in einer Userform-Listbox nur, wenn diese mittels RowSource gefüllt wird,
ohne spezifischen Möglichkeiten der Formatierung.
Du könntest evtl. eine Combobox obendrüber platzieren.

Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige