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

Suchfunktion für Listbox in Userform integrieren

Suchfunktion für Listbox in Userform integrieren
23.06.2008 12:59:20
stefanseevetal
Hallo Liebe Profis!
Ich habe eine Listbox in einer Userform, in der meine Outlook-Kontakte aufgelistet werden. Da die Liste recht lang werden kann, würde ich gerne in der Userform eine Suchfunktion per Textfeld integrieren, so dass ich z.B. den Namen "Meier" eingeben kann und mir in der Listbox dann nur noch die Einträge angezeigt werden, die den Namen "Meier" beinhalten. Genial wäre es natürlich, wenn sich die Listbox bei jedem Buchstaben, den ich in das Textfeld eingebe, reduziert, z.B. wenn ich "a" eingebe, werden in der Listbox nur noch alle Einträge mit dem Anfangsbuchstaben a angezeigt, wenn ich dann ein "an" eingebe, nur noch alle Einträge, die mit "an" beginnen usw.
Hat da jemand vielleicht schon mal etwas geschrieben? Und falls nicht, vielleicht kann mir ja jemand für den Anfang sagen, wie ich die Einträge in einer Listbox durchsuchen und mit einem Wort vergleichen kann?!
Also, schon mal vielen Dank und Gruß,
Stefan

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

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion für Listbox in Userform integrieren
23.06.2008 13:27:00
Rudi
Hallo,
teste mal:

Private Sub TextBox1_Change()
ListBox1.List = myListArray(Sheets(1).Range("A1").CurrentRegion.Value, , TextBox1.Text)
End Sub



Function myListArray(vntList, Optional iCol, Optional strText)
Dim vntTmp(), i As Integer, j As Integer, k As Integer
ReDim vntTmp(LBound(vntList, 2) To UBound(vntList, 2), LBound(vntList, 1) To UBound(vntList,  _
1))
If IsMissing(iCol) Then iCol = 1
If IsMissing(strText) Then
myListArray = vntList
Exit Function
End If
k = LBound(vntList) - 1
For i = LBound(vntList) To UBound(vntList)
If LCase(vntList(i, iCol)) Like LCase(strText & "*") Then
k = k + 1
For j = LBound(vntList, 2) To UBound(vntList, 2)
vntTmp(j, k) = vntList(i, j)
Next
End If
Next i
ReDim Preserve vntTmp(LBound(vntList, 2) To UBound(vntList, 2), LBound(vntList, 1) To k)
myListArray = WorksheetFunction.Transpose(vntTmp)
End Function


Die Listbox wird aus Sheets(1).Range("A1").CurrentRegion.Value gefüllt


Private Sub UserForm_Activate()
Dim vntList
vntList = Sheets(1).Range("A1").CurrentRegion
With ListBox1
.ColumnCount = UBound(vntList, 2)
.List = vntList
End With
End Sub

Gruß
Rudi

Anzeige
vielen Dank, funzt super
23.06.2008 13:39:32
stefanseevetal
Hallo Rudi,
einmal mehr vielen Dank für Deine Hilfe. Es funktioniert super!
Gruß,
Stefan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige