![]() |
Betrifft: Suchfunktion für Listbox in Userform integrieren
von: 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
![]() |
Betrifft: AW: Suchfunktion für Listbox in Userform integrieren
von: Rudi Maintaire
Geschrieben am: 23.06.2008 13:27:53
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
![]() |
Betrifft: vielen Dank, funzt super
von: stefanseevetal
![]() |