Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1052to1056
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Was wirklich schwieriges !!!

Was wirklich schwieriges !!!
23.02.2009 14:40:42
A.Franz
Hallo liebe Excel Spezialisten,
ich hoffe mir kann jemand helfen.Ich habe eine ListBox mit 10-Spalten die ihre Werte aus Tabelle 1 bezieht.Weiterhin habe ich eine TextBox in der ich einen Suchbegriff eingebe, damit mir dann nur noch alle Werte in der ListBox angezeigt werden die mit dem Suchbegriff übereinstimmen.Funktioniert auch schon teilweise, aber nun mein Problem.Die ListBox enthällt viele doppelte Werte.Z.B in Spalte 2 stehen Namen.Wenn ich nun über die TextBox z.B den Namen "Müller" suchen lasse, der bestimmt 5 mal in meiner Tabelle vorkommt, zeigt mir die ListBox immer nur die erste Zeile an, in der der Name Müller vorkommt.Ich hätte aber gerne das mir dann alle Zeilen die den Name Müller haben angezeigt werden.Komisch, wenn die Einträge mit Müller in der Tabelle direkt untereinander stehen funktionierts.Sobald aber dazwischen andere Namen vorkommen, wird immer nur der erste gefundene Eintrag angezeigt.
Kann mir hier bitte jemand weiterhelfen...?
Ich habe alles mögliche probiert, ich kriege es nicht hin!
Hier meine verwendeten Codes,
So wird die ListBox befüllt:
Private Sub UserForm_Activate() With Worksheets("Tabelle1") LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows. _ Count) ListBox1.RowSource = "A2:J" & LoLetzte ListBox1.ColumnCount = 10 End With End Sub


So wird mit dem Suchbegriff gesucht:


Private Sub CommandButton3_Click()
Dim LoI As Long
Dim LoZeile As Long
Dim RaFound As Range
Application.ScreenUpdating = False
If TextBox1 = "" Then
ListBox1.RowSource = "A2:J" & LoLetzte
Else
ListBox1.RowSource = ""
With Worksheets("Tabelle1")
Set RaFound = .Columns(1).Find(TextBox1 & "*", .Range("A1"), , xlWhole, , xlNext)
If Not RaFound Is Nothing Then
For LoI = RaFound.Row To LoLetzte
If UCase(Left(.Cells(LoI, 1), Len(TextBox1))) = UCase(TextBox1) Then
ListBox1.AddItem .Cells(LoI, 1).Text
ListBox1.List(LoZeile, 1) = .Cells(LoI, 2).Text
ListBox1.List(LoZeile, 2) = .Cells(LoI, 3).Text
ListBox1.List(LoZeile, 3) = .Cells(LoI, 4).Text
ListBox1.List(LoZeile, 4) = .Cells(LoI, 5).Text
ListBox1.List(LoZeile, 5) = .Cells(LoI, 6).Text
ListBox1.List(LoZeile, 6) = .Cells(LoI, 7).Text
ListBox1.List(LoZeile, 7) = .Cells(LoI, 8).Text
ListBox1.List(LoZeile, 8) = .Cells(LoI, 9).Text
ListBox1.List(LoZeile, 9) = .Cells(LoI, 10).Text
LoZeile = LoZeile + 1
Else
Exit For
End If
Next
End If
End With
End If
Set RaFound = Nothing
Application.ScreenUpdating = True
End Sub


Gruß Andre

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Else Exit For
23.02.2009 14:53:11
Josef
Hallo Andre,
bei deinem Code gehört das "Else - Exit For" raus, so gehts schneller. (allerdings ungetestet)
Private Sub CommandButton3_Click()
  Dim LoI As Long
  Dim LoZeile As Long, intC As Integer
  Dim RaFound As Range
  Dim strFirst As String
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  
  If TextBox1 = "" Then
    ListBox1.RowSource = "A2:J" & LoLetzte
  Else
    ListBox1.RowSource = ""
    With Worksheets("Tabelle1")
      Set RaFound = .Columns(1).Find(TextBox1 & "*", .Range("A1"), , xlWhole, , xlNext)
      If Not RaFound Is Nothing Then
        strFirst = RaFound.Address
        Do
          ListBox1.AddItem RaFound.Text
          For intC = 1 To 9
            ListBox1.List(ListBox1.ListCount - 1, intC) = RaFound.Offset(0, intC).Text
          Next
          Set RaFound = .Columns(1).FindNext(RaFound)
        Loop While Not RaFound = Nothing And RaFound.Address <> strFirst
      End If
    End With
  End If
  
  ErrExit:
  Set RaFound = Nothing
  Application.ScreenUpdating = True
End Sub

Gruß Sepp

Anzeige
AW: Else Exit For
23.02.2009 15:05:07
Sonnenpeter
Servus Sepp,
sag mal mit was stellst Du den Makrocode im Forum dar?
Gruß SP
AW: Else Exit For
23.02.2009 17:21:55
Josef
Hallo Peter,
was ich verwende, ist "am Markt" nicht erhältlich.
Ist aber damit Verwandt: Excel Code Jeanie
Gruß Sepp

AW: Else Exit For
23.02.2009 18:02:14
Sonnenpeter
Hallo Sepp,
nun ja, ich suche eine Freeware.
Gruß Sonnenpeter
AW: Freeware
25.02.2009 19:01:23
Sonnenpeter
Servus Sepp,
Danke für den Link.
Gruß Sonnenpeter
Ps: Funzt leider nicht unter Excel 2007
AW: Was wirklich schwieriges !!!
23.02.2009 14:53:15
Daniel
Hi
schmeiß mal das

Else
Exit For


aus dem Code raus
es sorgt dafür, daß die Schleife abbricht, sobald der Name nicht mehr übereinstimmt.
um trotzdem eine aktzepable Performance zu bekommen, könnstest du in der Schleife


For LoI = RaFound.Row To LoLetzte


anstelle von LoLezte den Wert:


.Columns(1).Find(TextBox1 & "*", .Range("A65536"), , xlWhole, , xlprevoius).row


verwenden. das ist sie Zeilennummer des letzen übereinstimmenden Wertes
Gruß, Daniel

Anzeige
AW: Was wirklich schwieriges !!!
23.02.2009 15:38:53
A.Franz
Hallo Sepp,
vielen Dank für deine Hilfe.Dein Code sieht ja völlig anders aus.Ich werde ihn jetzt gleich testen u.hoffe das es dann funktioniert.
Also vielen Dank noch mal!
Gruß Andre

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige