Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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
Combobox durchsuchen
23.06.2014 19:09:22
Keiler
Hallo zusammen,
suche jetzt schon seit Tagen nach einer Lösung für mein Problem:
Ich habe eine Userform mit einer Combobox die ich aus einer Tabelle beim Inizialisieren fülle. Jetzt möcht ich das während ich etwas in die Combobox schreibe danach gefiltert wird. Es funktioniert wenn ich mit den Anfangsbuchstaben beginne.
Wenn ich jedoch etwas aus der mitte eingebe funktionierts nicht mehr.
Bsp: in der combobox stehen folgende Daten:
2010012 Werkzeug
6501651 Auto
Beschaffung 2104550
wenn ich jetzt nach "2010012 Werkzeug" suchen will und "wer.." eingebe kommt nichts.
wenn ich "2010..." eingebe funktionierts.
Wie kann ich das mit VBA bewerkstelligen?
Vielen Dank schon mal im vorraus
Keiler

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox durchsuchen
23.06.2014 21:43:10
Nepumuk
Hallo,
ein Beispiel zum weiterbasteln:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private ldtmComboTimer As Date

Public Sub StartComboTimer()
    
    Static slnOldength As Long
    
    If slnOldength <> Len(UserForm1.SearchText) Then
        slnOldength = Len(UserForm1.SearchText)
    Else
        UserForm1.SearchText = vbNullString
        slnOldength = 0
    End If
    
    ldtmComboTimer = Now + TimeSerial(0, 0, 1)
    Application.OnTime ldtmComboTimer, "StartComboTimer"
    
End Sub

Public Sub StopComboTimer()
    Application.OnTime ldtmComboTimer, "StartComboTimer", , False
End Sub

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private mstrSearchText As String

Private Sub ComboBox1_Enter()
    SearchText = vbNullString
    Call StartComboTimer
End Sub

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call StopComboTimer
End Sub

Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Dim lngIndex As Long
    SearchText = SearchText & LCase$(Chr$(KeyAscii))
    KeyAscii = 0
    With ComboBox1
        .ListIndex = -1
        For lngIndex = 0 To .ListCount - 1
            If LCase$(.List(lngIndex)) Like "*" & SearchText & "*" Then
                .ListIndex = lngIndex
                Exit For
            End If
        Next
    End With
End Sub

Private Sub UserForm_Activate()
    With Tabelle1
        ComboBox1.List = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
    End With
End Sub

Public Property Get SearchText() As String
    SearchText = mstrSearchText
End Property

Public Property Let SearchText(ByVal pvstrSearchText As String)
    mstrSearchText = pvstrSearchText
End Property

Gruß
Nepumuk

Anzeige
AW: Combobox durchsuchen
24.06.2014 00:59:28
Werner
Hallo,
hier eine Lösung allerdings mit einer Listbox und nicht mit einer Combobox (den Code habe ich auch hier aus dem Forum).
Option Explicit
Dim sSuchbegriff As String
Dim iSpalte As Integer
Private Sub Abbruch_Click()
Unload Me
End Sub

Private Sub Anzeigen_Click()
Application.ScreenUpdating = False
Call UserForm_Activate
Application.ScreenUpdating = True
End Sub

Private Sub list_Filter()
Application.ScreenUpdating = False
Dim iIndex As Integer
If sSuchbegriff = "" Then Call UserForm_Activate
For iIndex = Stückliste.ListCount - 1 To 0 Step -1
If Not CBool(InStr(LCase(Stückliste.List(iIndex, iSpalte - 1)), LCase(sSuchbegriff))) Then Stü _
ckliste.RemoveItem iIndex
Next iIndex
Select Case iSpalte
Case 1: TextBox1.Value = ""
End Select
If Stückliste.ListCount = 0 Then
MsgBox "Zum eingegebenen Filter-Begriff """ & sSuchbegriff & """ wurde kein Eintrag gefunden.",  _
_
48, "  Hinweis für " & Application.UserName
End If
Application.ScreenUpdating = True
End Sub

Private Sub Suchen_Click()
Application.ScreenUpdating = False
If Stückliste.ListCount  "" Then
sSuchbegriff = Trim$(TextBox1.Value)
iSpalte = 1
End If
Call list_Filter
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Activate()
Dim X As Long
Dim i As Integer
Dim sText As String
Application.ScreenUpdating = False
Worksheets("Daten").Activate
TextBox1.SetFocus
Me.Stückliste.Clear
X = Range("D" & Rows.Count).End(xlUp).Row 'Spalte an deine Bedürfnisse anpassen
For i = 5 To X 'hier Zeile 5 ggf. an deine Bedürfnisse anpassen
With Worksheets("Daten")
sText = .Cells(i, 4).Value 'hier Spalte D (4) ggf. an deine Bedürfnisse anpassen
End With
Me.Stückliste.AddItem
Stückliste.List(Stückliste.ListCount - 1, 0) = Cells(i, 4) 'hier Spalte D (4) ggf. an deine Bedü _
rfnisse anpassen
Next i
Application.ScreenUpdating = True
End Sub
Du brauchst eine Userform, darauf eine Textbox (Name: TextBox1) zur eingabe des Suchbegriffs, einen Command Button für Suchen (Name: Suchen), einen Command Button für wieder alles anzeigen (Name: Anzeigen) und eine Listbox mit einer Spalte (Name: Stückliste).
Solltest du eine kleine Test-Tabelle benötigen dann melde dich. Derzeit kann ich sie nicht hochladen das könnte ich erst am Mittwoch.
Gruß Werner

Anzeige
AW: Combobox durchsuchen
24.06.2014 19:10:26
Keiler
Hallo ,
@Werner, danke für die ausführliche Antwort. Ich wollte kein zusätzliches Textfeld in meiner Userform haben. Habe mich deshalb für den Code von @Nepumuk entschieden. Nachdem ich ihn angepasst habe funktioniert er super.
Danke Keiler

AW: Combobox durchsuchen
24.06.2014 19:15:36
Keiler
Hallo,
@Werner.. erstmal anke für die Ausführliche Antwort. Da ich jedoch kein neues Textfeld in meiner userform wollte habe ich mich für die Variante von @Nepumuk entschieden. nach der anpassung läuft es super.
Danke
Keiler

AW: Combobox durchsuchen
24.06.2014 19:18:12
Keiler
Oh mist, jetzt hab ichs 2 mal reingeschrieben

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige