Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Suchfunktion für Listbox in Userform integrieren

Betrifft: Suchfunktion für Listbox in Userform integrieren von: stefanseevetal
Geschrieben am: 23.06.2008 12:59:20

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
Geschrieben am: 23.06.2008 13:39:32

Hallo Rudi,
einmal mehr vielen Dank für Deine Hilfe. Es funktioniert super!
Gruß,
Stefan


 

Beiträge aus den Excel-Beispielen zum Thema "Suchfunktion für Listbox in Userform integrieren"