Listbox durchsuchen
#1
Hey ich habe da noch was >.<

Ich habe da noch das Problem mit der Listbox. Das ich bei der Suche ähnliche Namen nicht unterscheiden kann.

Wenn ich Holz suche, zeigt er mir Weinholz an. Suche ich Mann zeigt er mit Zimmermann.

Das mein Suche Code

Wie kann ich nach dem genauen Wert suchen. Aber immer noch unabhängig von Groß- und Kleinschreibung. Bei Eingabe "muster", "Muster" und nicht Mustermann.

Code:
Private Sub txtSuche_Change()
 
 
 
 Dim i As Integer, ii As Integer
 Dim vntList, strTxt As String, arrSelected()
 strTxt = LCase(txtsuche)
 vntList = ListBox1.List
 ReDim arrSelected(ListBox1.ListCount - 1)
 For i = 0 To ListBox1.ListCount - 1
   For ii = 0 To ListBox1.ColumnCount - 1
     arrSelected(i) = InStr(LCase(vntList(i, ii)), strTxt) > 0
     If arrSelected(i) Then Exit For
   Next
 Next
 With ListBox1
 For i = 0 To .ListCount - 1
   .Selected(i) = arrSelected(i)
 Next
 End With
 
txtsuche = UCase(Left(txtsuche, 1)) & LCase(Mid(txtsuche, 2))


End Sub
Top
#2
Code:
Private Sub txtSuche_Change()
 Listbox1.value=txtSuche.text
  msgbox Listbox1.column(1)
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Kaywarri124
Top
#3
(28.08.2017, 13:42)Kaywarri124 schrieb: Hey ich habe da noch was >.<

Ich habe da noch das Problem mit der Listbox. Das ich bei der Suche ähnliche Namen nicht unterscheiden kann.


Code:
 
  
  

      arrSelected(i) = InStr(LCase(vntList(i, ii)), strTxt) > 0

  

 arrSelected(i) = LCase(vntList(i, ii)) = lcase(strTxt)

Instr gibt dir doch noch zurück ob der Begriff auftaucht irgenwo (und dann brauchst du auch kein Lcase da Instr noch ein weiteres Argument hat)
[-] Folgende(r) 1 Nutzer sagt Danke an Jeanie für diesen Beitrag:
  • Kaywarri124
Top
#4
UserForm_Initialize
Guten Morgen,

also die Änderung von Jeanie funktioniert einwandfrei, so habe ich mir da vorgestellt. Vielen dank :)

ABER.... Undecided  leider hat sich jetzt dadurch ein Fehler reingeschlichen.

Wenn ich txtsuche mit
txtsuche = txt_Nachname.Value

in der UserForm_Initialize ergänze, da ich in der Nächsten Userform nur bestimmte Zellen angezeigt haben möchte, sagt er mir Laufzeitfehler.

Code:
Private Sub txtSuche_Change()
 
 
 
 Dim i As Integer, ii As Integer
 Dim vntList, strTxt As String, arrSelected()
 strTxt = LCase(txtsuche)
 vntList = ListBox1.List
>>ReDim arrSelected(ListBox1.ListCount - 1)<<<<<<<<<<<<<<<<<<<<<< Laufzeitfehler '9' Außerhalb des gültigen...
  For i = 0 To ListBox1.ListCount - 1
   For ii = 0 To ListBox1.ColumnCount - 1
      arrSelected(i) = LCase(vntList(i, ii)) = LCase(strTxt)
      If arrSelected(i) Then Exit For
   Next
 Next
 With ListBox1
 For i = 0 To .ListCount - 1
   .Selected(i) = arrSelected(i)
 Next
 End With
 
txtsuche = UCase(Left(txtsuche, 1)) & LCase(Mid(txtsuche, 2))


End Sub
Top
#5
Hallo,

ListBox1.ListCount hat hier in dem Fall den Wert 0, das solltest Du auch bei den folgenden Schleifen merken, die gar nicht ausgeführt werden.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Kaywarri124
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste