Wie erstelle ich eine Suchabfrage

oaxao

Grünschnabel
hallo ... mittels der Eingabe in einem Textfeld soll ein vorhandener Listeneintrag markiert werden. Eine normale Suchabfrage :-)

Bei Eingabe des ersten Buchstabens (A) soll der entsprechende erste Listeneintrag der mit gleichem Zeichen beginnt markiert werden. Bei Eingabe des zweiten (An) Buchstaben das Wort mit den ersten beiden übereinstimmenden Zeichen....usw.

Genau wie bei der INDEX Suche ...

wie lautet der code?

Danke wenn da jemand wider mehr weiß als ich :-)
 
Mit bisschen überlegen kommt man drauf:

Die Textbox heißt Text1 und die Listbox List1:
Code:
Private Sub Text1_Change()
Dim intCounter As Integer
For intCounter = 0 To List1.ListCount - 1
	If VBA.LCase$(VBA.Left$(List1.List(intCounter), Len(Text1.Text))) = VBA.LCase$(Text1.Text) Then
		'-->diesen Eintrag markieren!
		
		List1.ListIndex = intCounter
		Exit Sub
	End If
Next
End Sub

Es wird hier keine Unterscheidung zwischen Groß- und Kleinbuchstaben gemacht.
 
Noch viel besser und schneller bei großen Listeneinträgen über 2000 items gehts mit der Send Message Methode. Aber danke danke !

Code:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const LB_FINDSTRING = &H18F
Private Sub Form_Load()
    With List1
        .AddItem "Computer"
        .AddItem "Screen"
        .AddItem "Modem"
        .AddItem "Printer"
        .AddItem "Scanner"
        .AddItem "Sound Blaster"
        .AddItem "Keyboard"
        .AddItem "CD-Rom"
        .AddItem "Mouse"
    End With
End Sub


Private Sub Text1_Change()
    'Retrieve the item's listindex
    List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal Str(Text1.Text))
End Sub
 
Zurück