Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wortsuche im Userform (Listbox)

Wortsuche im Userform (Listbox)
14.11.2015 17:19:12
Matthias
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.:

Die Datei https://www.herber.de/bbs/user/101512.xlsm wurde aus Datenschutzgründen gelöscht


kann mir jemand helfen dieses Problem zu beheben?
Liebe grüße und vielen Dank im Vorraus
Matthias Dietz

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wortsuche im Userform (Listbox)
14.11.2015 17:45:07
Nepumuk
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

Anzeige
AW: Wortsuche im Userform (Listbox)
14.11.2015 17:51:01
Sepp
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

Anzeige
AW: Wortsuche im Userform (Listbox)
14.11.2015 18:39:33
Matthias
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

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

Anzeige
Datei
14.11.2015 18:42:38
Sepp
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

Anzeige
AW: Datei
14.11.2015 18:53:12
Matthias
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

Anzeige
AW: Datei
14.11.2015 18:53:42
Matthias
frage wieder offen...

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

AW: Datei
14.11.2015 19:25:24
Matthias
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

Anzeige
AW: Datei
14.11.2015 19:30:17
Sepp
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

Anzeige
AW: Datei
15.11.2015 00:34:36
Matthias
Hallo Forumgemeinde,
Hallo Sepp,
Vielen Dank für deine Hilfe dieser Code Funktioniert Perfekt.
LG Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige