Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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
Suchen und Funde in Listbox ausgeben
02.06.2016 14:14:26
Tom
Hallo zusammen,
ich habe in den letzten Tagen schon einiges auf diesen Seiten gelernt. Aber nun stoße ich an eine Grenze.
Ich habe eine Excel-Tabelle in der Eingänge gesammelt werden.
Dazu gibt es jetzt ein Userform mit einer mehrspaltigen Listbox in der die Daten zu den Suchergebnissen ausgegeben werden sollen. Der Suchbegriff wird in ein Textfeld eingegeben und ist, falls das Leer ist, standardmäßig "*". Durchsucht wir die Spalte E in der vorher die Inhalte der Zellen "Name" und "Vorname" zusammengefügt werden. Das funktioniert auch alles wunderbar.
Allerdings, und jetzt kommt das Problem was ich habe, steht der erste Fund in der Listbox immer an letzter Stelle. Alle anderen sind in der korrekten Reihenfolge nach Datum sortiert wie die Tabelle selbst.
Hier der Code dazu:
Sub Suchen()
Dim rngFund As Range
Dim rngFundZeile As Range
Dim rngSuchbereich As Range
Dim strTestBegriff As String
Dim strErsterFund As String
Dim rngletzteZeile As Range
Dim wksAktiv As Worksheet
Dim x As Integer
Dim y As Integer
ThisWorkbook.Activate
'Suchbereich festlegen
Set wksAktiv = ActiveSheet
Set rngletzteZeile = wksAktiv.UsedRange
Set rngSuchbereich = wksAktiv.Range("e5", "e" & rngletzteZeile.Rows.Count)
'Suchbereich mit Vor- und Nachnamen füllen
For x = 5 To rngletzteZeile.Rows.Count
Cells(x, 5) = Cells(x, 3) & ", " & Cells(x, 4)
Next
'Suchbegriff definieren
If strTestBegriff = "" Then
strTestBegriff = "*"
Else
strTestBegriff = frmAnlegenSuchen.txtSuchen.Value
End If
Set rngFund = rngSuchbereich.Find(strTestBegriff)
'Suche durchlaufen lassen
If Not rngFund Is Nothing Then
strErsterFund = rngFund.Address
Do
With frmAnlegenSuchen.lstSuchergebnisse
For Each rngFundZeile In rngFund.EntireRow
.AddItem rngFundZeile.Row
.Column(1, .ListCount - 1) = rngFundZeile.Cells(1)
.Column(2, .ListCount - 1) = rngFundZeile.Cells(2)
.Column(3, .ListCount - 1) = rngFundZeile.Cells(3)
.Column(4, .ListCount - 1) = rngFundZeile.Cells(4)
.Column(5, .ListCount - 1) = rngFundZeile.Cells(6)
Next
End With
Set rngFund = rngSuchbereich.FindNext(rngFund)
Loop While rngFund.Address  strErsterFund
End If
End Sub
Weiß jemand wie ich es hinbekomme, dass alle Funde in der korrekten Reihenfolge in die Liste eingespielt werden bzw. kann mir sagen warum der erste Fund in die letzte Zeile rutscht?

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verständnisfragen
02.06.2016 14:57:17
Fennek
Hallo Tom,
nur 2 Verständnisfragen:
Warum wird der Makro nicht mit dem "Change-event" des Suchfeldes gestartet?
Warum wird die Spalte E (Vor- und Nachname) jedes Mal neu berechnet?
mfg
(Nach den Prinzipien der "best practise" mag das ein guter Code sein, aber vermutlich könnte man 2/3 streichen)

AW: Verständnisfragen
02.06.2016 17:41:18
Tom
Hallo Fennek,
danke für den Hinweis. Du hast Recht, die Aktion macht an anderer Stelle (z.B. Eingabe neuer Datensatz) mehr Sinn und werde ich anpassen.
Ich hab die Sub in ein Modul "ausgelagert", um den Code in der Userform etwas übersichtlicher zu haben und weil ich das auch an anderer Stelle nochmal brauchen kann. Die Sub wird dann aber, wie du schon sagtest, vom "Change-Event" der Textbox gestartet.
Viele Grüße
(Das glaube ich gerne. Das ist das Ergebnis von angelesen und ausprobiert...insofern bin ich für jeden Verbesserungshinweis dankbar)
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige