Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-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

Nachfrage in Listbox suchen

Betrifft: Nachfrage in Listbox suchen von: Guesa
Geschrieben am: 27.09.2020 10:47:58

Hallo Forum
Dieser Code zum suchen in einer Listbox verwende ich schon in einer Datei allerdings für 5 Spalten und das funktioniert auch, alle Treffer werden markiert.
Das einzige was ich geändert habe ist die Spaltenanzahl und hier funktioniert es nicht.
Was übersehe ich da?

Gruß, Guesa

https://www.herber.de/bbs/user/140464.xlsm

Betrifft: was findest Du denn z.B. nicht? ... owT
von: Matthias L
Geschrieben am: 27.09.2020 11:15:26



Betrifft: AW: Nachfrage in Listbox suchen
von: Hajo_Zi
Geschrieben am: 27.09.2020 11:17:15

Hallo Guesa,

was ist falsch?
Wie kann ich Deinem Fehler simulieren?

GrußformelHomepage

Betrifft: AW: Nachfrage in Listbox suchen
von: Nepumuk
Geschrieben am: 27.09.2020 11:27:42

Hallo Guesa,

so:
If .List(i, 0) = TextBox1.Text Then

Gruß
Nepumuk

Betrifft: Du hast z.T. Leerzeichen am Ende
von: Matthias L
Geschrieben am: 27.09.2020 11:29:39

z.B. bei Marienstraße
dann wird diese nicht gefunden.

Gruß ...

Betrifft: AW: Nachfrage in Listbox suchen
von: GerdL
Geschrieben am: 27.09.2020 11:31:36

Moin Guesa,

so ?
Private Sub CommandButton1_Click()

Dim i As Long, j As Long

With Listbox1
     If TextBox1 = "" Then Exit Sub
  
    .MultiSelect = fmMultiSelectMulti
    
    For i = 0 To .ListCount - 1
      
      .Selected(i) = False
      For j = 0 To 4
      If .List(i, j) = TextBox1.Text Then
         .Selected(i) = True: Exit For
      End If
      Next
      
    Next
End With

End Sub


Private Sub UserForm_Initialize()
With Listbox1
.Clear
.ColumnCount = 5
.ColumnWidths = "150pt; 100pt; 100pt"
.List = Worksheets("Unterwaben").Range("A1:E875").Value
End With
TextBox1.SelStart = 0
 TextBox1.SelLength = Len(TextBox1)
End Sub
Gruß Gerd

Betrifft: Nachfrage Verwendung
von: ralf_b
Geschrieben am: 27.09.2020 11:57:17

Du schreibst der Code funktioniert bisher.

Wie benutzt du den denn?
Bei einer zweiten Suchanfrage bleiben die ersten Markierungen erhalten, also ein fehlerhaftes Suchergebnis beim zweiten Suchlauf.
Wird die UF immer neu gestartet?

Du suchst nach der genauen Übereinstimmung. Das birgt ein Risiko.
Die Suchergebnisse bei mehreren Treffern werden nicht zusammengefaßt, du mußt also die ganze Liste durchgehen um alle Treffer zu finden.





Betrifft: AW: Nachfrage in Listbox suchen
von: Guesa
Geschrieben am: 27.09.2020 11:59:21

Danke für Eure Hilfe
Ich habe alles nochmals überprüft und festgestellt das Matthias da richtig liegt, ist mir nicht aufgefallen das am Ende der jeweiligen Einträge ein Leerzeichen ist. Hat da jemand eine Idee wie ich diese bei knapp 900 Zeilen auf einmal raus hole?

Gruß, Guesa

Betrifft: AW: Nachfrage in Listbox suchen
von: ralf_b
Geschrieben am: 27.09.2020 12:15:01

versuch mal das. adressen noch anpassen
Sub test()
 For i = 1 To 900
  Sheets("Unterwaben").Range("A" & i).Value = Trim(Sheets("Unterwaben").Range("A" & i).Value)
Next
End Sub


Betrifft: AW: Nachfrage in Listbox suchen
von: Guesa
Geschrieben am: 27.09.2020 12:34:15

Hallo Ralf
hat funktioniert. Aber anscheinend stören die Leerzeichen im Text auch z.B. Am Bruch, wenn ich nur am eingebe wird nichts gefunden. Ich muss die Datei auf meinem Arbeitsrechner mal überprüfen ob das da genauso ist. Aber ich denke das ich da was übersehen habe.

Gruß, Guesa

Betrifft: es gibt auch RTrim! owT
von: Matthias L
Geschrieben am: 27.09.2020 12:47:31



Betrifft: AW: Nachfrage in Listbox suchen
von: ralf_b
Geschrieben am: 27.09.2020 15:33:14

Das ist so programmiert. Es wird die genaue! Übereinstimmung des Zellinhaltes erwartet um einen Treffer zu erzeugen. besser wäre ein Vergleich mit like "*Am*" das ist ein Mustervergleich.

Mir ist aufgefallen das deine Tabelle nicht so recht konsistent ist. Du hast mehrere Überschriften zwischen deinen Daten. Diese sollten dort weg und der Name der Stadt in eine Spalte vor den Strassennamen. Somit könntest du abhängige Listboxen füllen und ja nach Stadt filtern.