Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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
Listbox auf mehrere Spalten erweitern
28.04.2017 14:04:14
Herbert
Guten Tag,
und zwar habe ich das Problem, dass in meiner Listbox im Userform nur eine Spalte berücksichtigt wird. Ich möchte gerne, dass die Suchfunktion wie Aktuell erhalten bleibt. Jedoch sollen die ersten 5 Spalten in der Listbox aufgeführt sein und auch bei eingabe in die Textbox berücksichtigt werden.
Habe mein Projekt angehängt.
Ich hoffe es kann mir jemand helfen, bei meinem sicher kleinen Problem, welches ich nicht bewältigt bekomme.
Gruß
Herbert
https://www.herber.de/bbs/user/113177.xlsm

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 14:24:34
ChrisL
Hi Herbert
ColumnCount Eigenschaft von der Listbox auf 5 setzen.
Private Sub TextBox1_Change()
Dim i As Long
Dim j As Long
Dim a As Long
a = Len(TextBox1)
ListBox1.Clear
For i = 2 To Tabelle1.UsedRange.Rows.Count
For j = 1 To Len(Tabelle1.Cells(i, 1)) - a + 1
If UCase(Mid(Tabelle1.Cells(i, 1), j, a)) = UCase(TextBox1) Then
ListBox1.AddItem (Tabelle1.Cells(i, 1))
            ListBox1.List(ListBox1.ListCount - 1, 1) = Tabelle1.Cells(i, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = Tabelle1.Cells(i, 3)
ListBox1.List(ListBox1.ListCount - 1, 3) = Tabelle1.Cells(i, 4)
ListBox1.List(ListBox1.ListCount - 1, 4) = Tabelle1.Cells(i, 5)
Exit For
End If
Next j
Next i
End Sub
cu
Chris
Anzeige
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 14:56:41
Herdert
Hallo Chris,
danke für die schnelle Antwort. Hat super geklappt, jedoch habe ich jetzt noch das Problem, dass ich die Proportionen der einzelnen Spalten ändern muss, was aber noch viel wichtiger ist, die Eingabe im Textfeld bezieht sich nicht auf alle Spalten sondern nur auf die Erste. Da ich das Textfeld als Suche benutze, muss sich die Eingabe auf alle Spalten beziehen.
Hoffe einer hat eine Idee.
Gruß
Herbert
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 15:22:19
ChrisL
Hi Herbert
ListBox Eigenschaft ColumnWidth z.B. 10cm;5cm;3cm;2cm;1cm
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 1 To 5
Controls("TextBox" & i) = ""
Next i
End Sub

Private Sub TextBox1_Change()
Call RefreshLB
End Sub

Private Sub TextBox2_Change()
Call RefreshLB
End Sub

Private Sub TextBox3_Change()
Call RefreshLB
End Sub

Private Sub TextBox4_Change()
Call RefreshLB
End Sub

Private Sub TextBox5_Change()
Call RefreshLB
End Sub

Private Sub RefreshLB()
Dim i As Long, j As Byte, b As Boolean
ListBox1.Clear
For i = 2 To Tabelle1.UsedRange.Rows.Count
b = True
For j = 1 To 5
If Controls("TextBox" & j)  "" Then
If Not UCase(Tabelle1.Cells(i, j)) Like "*" & UCase(Controls("TextBox" & j)) & "*"  _
Then
b = False
Exit For
End If
End If
Next j
If b Then
ListBox1.AddItem (Tabelle1.Cells(i, 1))
ListBox1.List(ListBox1.ListCount - 1, 1) = Tabelle1.Cells(i, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = Tabelle1.Cells(i, 3)
ListBox1.List(ListBox1.ListCount - 1, 3) = Tabelle1.Cells(i, 4)
ListBox1.List(ListBox1.ListCount - 1, 4) = Tabelle1.Cells(i, 5)
End If
Next i
End Sub

cu
Chris
Anzeige
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 15:35:37
ChrisL
Unterschied zu Daniels Lösungen:
Ich bin davon ausgegangen, dass es dann 5 TextBoxen gibt, welche quasi einen Filter über die jeweiligen Spalten darstellen. Vermutlich ist es eher was Daniel vorschlägt d.h. weiterhin 1 TextBox mit Suche in allen 5 Spalten...
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 15:37:31
Herdert
Hi Chris, danke wieder für die schnelle Antwort. Irgendwie habe ich mit dem Code ein Problem, der erkennt bei mir einen Fehler an der Stelle "HIER". Beim ausführen zeigt er auch die Spalten nicht mehr an und die Inhalte, wenn ich Suchen will kommt eine Fehlermeldung.
Gruß
Herbert
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 1 To 5
Controls("TextBox" & i) = ""
Next i
End Sub
Private Sub TextBox1_Change()
Call RefreshLB
End Sub
Private Sub TextBox2_Change()
Call RefreshLB
End Sub
Private Sub TextBox3_Change()
Call RefreshLB
End Sub
Private Sub TextBox4_Change()
Call RefreshLB
End Sub
Private Sub TextBox5_Change()
Call RefreshLB
End Sub
Private Sub RefreshLB()
Dim i As Long, j As Byte, b As Boolean
ListBox1.Clear
For i = 2 To Tabelle1.UsedRange.Rows.Count
b = True
For j = 1 To 5
HIER -->>> If Controls("TextBox" & j)  "" Then   

Anzeige
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 15:22:18
Daniel
Hi
probiers mal mit diesem Code.
der arbeitet etwas anders herum.
die Listbox wird zunächst vollständig aus der Tabelle geladen.
das geht ohne AddItem in einem Schritt.
dann werden die Zeilen, die nicht der Suchanfrage entsprechen, gelöscht.
Private Sub TextBox1_Change()
Dim i As Long
Dim j As Long
Dim a As Long
Dim txt As String
a = Len(TextBox1)
ListBox1.Clear
ListBox1.List = Tabelle1.Range("A2:E" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
For i = ListBox1.ListCount - 1 To 0 Step -1
txt = ""
For j = 0 To ListBox1.ColumnCount - 1
txt = txt & "|" & ListBox1.List(i, j)
Next
If Not UCase(txt) Like "*" & UCase(TextBox1.Text) & "*" Then ListBox1.RemoveItem i
Next
End Sub
Private Sub UserForm_Activate()
Dim i As Long
ListBox1.Clear
ListBox1.ColumnCount = 5
ListBox1.List = Tabelle1.Range("A2:E" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
TextBox1 = ""
End Sub

die Spaltenbreiten kannst du über die Eigenschaft ColumnWidth einstellen.
Gruß Daniel
Anzeige
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 15:30:11
Daniel
Hi
noch ne andere Methode, um die Listbox gefiltert zu befüllen.
hierbei prüfst du mit ZählenWenn, ob der gesuchte Text in der Tabellenzeile enthalten ist.
damit kannst du dann die 5 Zellen auf einmal prüfen:
Private Sub TextBox1_Change()
Dim z As Long
Dim s As Long
Dim i As Long
ListBox1.Clear
i = 0
With Tabelle1
For z = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(.Cells(z, 1).Resize(, 5), "*" & TextBox1.Text & "*") > 0  _
Then
ListBox1.AddItem
For s = 1 To 5
ListBox1.List(i, s - 1) = .Cells(z, s)
Next
i = i + 1
End If
Next
End With
End Sub
Gruß Daniel
Anzeige
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 15:45:06
Herdert
Hi Daniel,
vielen vielen DANK genau so wollte ich es haben! Funktioniert!
Noch eine kleine Bitte, da ich wirklich schlecht in VBA bin, kannst du mir ein Beispiel geben für die Spaltenbreiten-Einstellung? Damit ich es auch an die richtige Stelle schreibe.
Aber der Rest sit wirklich SUPER!
Gruß
Herbert
AW: Listbox auf mehrere Spalten erweitern
28.04.2017 16:16:25
Daniel
Hi
die Spaltenbreite würde ich nicht per VBA festlegen, sondern die kannst du auch im VBA-Editor in der Eigenschaftsliste angeben.
Genauso die Angabe, dass die Listbox 5 Spalten hat.
Gruß Daniel

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige