Wortsuche im Userform (Listbox)

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox TextBox
Bild

Betrifft: Wortsuche im Userform (Listbox)
von: Matthias Dietz
Geschrieben am: 14.11.2015 17:19:12

Hallo Forumgemeinde,
in meinem aktuellen Projekt habe ich eine "Produktsuche" eingefügt,
Diese gibt, wenn ich textbox1 enter drücke in einer Listbox die ergebnisse wieder,
Soweit so gut, dies Funktioniert auch.
Mein Problem was ich habe, ist das nur 10 spalten wiedergegeben werden.
ich benötige aber 42 spalten.
BSP.:
https://www.herber.de/bbs/user/101512.xlsm
kann mir jemand helfen dieses Problem zu beheben?
Liebe grüße und vielen Dank im Vorraus
Matthias Dietz

Bild

Betrifft: AW: Wortsuche im Userform (Listbox)
von: Nepumuk
Geschrieben am: 14.11.2015 17:45:07
Hallo,
teste mal:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Dim s As String
        Dim Found As Range
        Dim FirstAddress As String
        Dim lngRow As Long, lngColumn As Long, lngFoundRow As Long
        Dim avntValues()
        ' On Error Resume Next
        
        s = Trim(TextBox1.Text) 'Sucheingabe über Textbox1 steuern
        If s = "" Then Exit Sub
        ListBox1.Clear
        With Tabelle4
            Set Found = Tabelle4.Cells.Find(what:=s, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
            
            If Not Found Is Nothing Then
                FirstAddress = Found.Address
                ListBox1.ColumnCount = 40 'Gibt die Werte der gefundenen Treffer an (Spaltenbezogen)
                Do
                    
                    lngFoundRow = Found.Row
                    
                    Redim Preserve avntValues(1 To 40, 0 To lngRow)
                    
                    For lngColumn = 1 To 40
                        avntValues(lngColumn, lngRow) = Tabelle4.Cells(lngFoundRow, lngColumn).Value
                    Next
                    
                    Set Found = Tabelle4.Cells.FindNext(after:=Found)
                    If Found.Address = FirstAddress Then Exit Do
                    lngRow = lngRow + 1
                Loop
                
                ListBox1.Column = avntValues
                
            End If
        End With
    End If
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Wortsuche im Userform (Listbox)
von: Sepp
Geschrieben am: 14.11.2015 17:51:01
Hallo Matthias,

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim s As String
Dim Found As Range
Dim FirstAddress As String
Dim varItem As Variant, varList() As Variant, lngI As Long

If KeyCode = 13 Then
  s = Trim(TextBox1.Text) 'Sucheingabe über Textbox1 steuern
  If s = "" Then Exit Sub
  ListBox1.Clear
  ListBox1.ColumnCount = 42
  With Tabelle4
    Set Found = .Cells.Find(what:=s, LookAt:=xlPart)
    If Not Found Is Nothing Then
      FirstAddress = Found.Address
      Do
        varItem = .Range(.Cells(Found.Row, 1), .Cells(Found.Row, 42))
        Redim Preserve varList(lngI)
        varList(lngI) = varItem
        lngI = lngI + 1
        Set Found = .Cells.FindNext(after:=Found)
      Loop While Not Found Is Nothing And Found.Address <> FirstAddress
    End If
  End With
  If lngI > 0 Then ListBox1.List = Application.Transpose(Application.Transpose(varList))
End If
End Sub

Gruß Sepp


Bild

Betrifft: AW: Wortsuche im Userform (Listbox)
von: Matthias Dietz
Geschrieben am: 14.11.2015 18:39:33
Hallo
Vielen dank an sepp und nepumuk, funktionieren beide,
nur jetzt gibt die listbox das gefundene immer zweimal wieder.
wo habe ich da den fehler sitzen?
Vielen dank im vorraus
LG MAtthias Dietz

Bild

Betrifft: AW: Wortsuche im Userform (Listbox)
von: Sepp
Geschrieben am: 14.11.2015 18:40:44
Hallo Matthias,
also sowohl bei meinem als auch bei Nepumuks Code, wird nichts zwei mal eingelesen!

Gruß Sepp


Bild

Betrifft: Datei
von: Sepp
Geschrieben am: 14.11.2015 18:42:38
Hallo Matthias,
anbei deine Datei mit meinem Code. Ich habe noch eine Routine zum automatischen Anpassen der Spaltenbreite der Listbox eingefügt.
https://www.herber.de/bbs/user/101514.xlsm

Gruß Sepp


Bild

Betrifft: AW: Datei
von: Matthias Dietz
Geschrieben am: 14.11.2015 18:53:12
Hallo sepp,
ich zweifle ja nicht an euch, sondern an mir. wie gesagt wenn ich etwas such gibt die listbox die Produkte zweimal wieder.....
bei deiner datei bekomme ich die fehlermeldung laufzeit fehler 9...
beim debbugen markiert excel folgendes....
For iCol = LBound(theList, 2) To UBound(theList, 2)
vielen danke für deine mühe

Bild

Betrifft: AW: Datei
von: Matthias Dietz
Geschrieben am: 14.11.2015 18:53:42
frage wieder offen...

Bild

Betrifft: AW: Datei
von: Matthias Dietz
Geschrieben am: 14.11.2015 19:00:25
Hallo sepp,
wenn ich zb.: das wort Top oder Aqua suche, funktioniert deine datei
suche ich jetzt aquatop kommt der laufzeitfehler
LG matthias

Bild

Betrifft: AW: Datei
von: Matthias Dietz
Geschrieben am: 14.11.2015 19:25:24
Hallo Forumgemeinde,
natürlich war das mein (Denk)fehler, wenn ich ein wort such, das mehrmals in der zeile vorkommt, gibt er es natürlich zwei mal wieder......
Ich danke euch für eure hilfe.
@sepp:
woran liegt der laufzeitfehler wenn das wort eine gewisse länge überschreitet, ich kann mir dies nicht erklären.
Vielen Dank im vorraus
LG Matthias

Bild

Betrifft: AW: Datei
von: Sepp
Geschrieben am: 14.11.2015 19:30:17
Hallo Matthias,
da war ein Fehler in meinem Code. Die doppelten, die Ursache hast du ja selber erkannt, hab ich aus ausgemerzt.
https://www.herber.de/bbs/user/101515.xlsm

Gruß Sepp


Bild

Betrifft: AW: Datei
von: Matthias Dietz
Geschrieben am: 15.11.2015 00:34:36
Hallo Forumgemeinde,
Hallo Sepp,
Vielen Dank für deine Hilfe dieser Code Funktioniert Perfekt.
LG Matthias

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Wortsuche im Userform (Listbox)"