Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1608to1612
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

Userform - Codeänderung für Sortierung

Userform - Codeänderung für Sortierung
28.02.2018 12:51:17
WalterK
Hallo,
mit dem untenstehenden Code für eine Userform (aus dem Internet) werden mir Suchtreffer ausgegeben. In Spalte F:F ist in der Excel-Liste das Datum hinterlegt, die Excel-Liste wird fortlaufend ergänzt, daher ist das jüngste Datum immer am Schluss der Excel-Liste.
So ist es dann natürlich auch bei den Suchtreffern in der Userform.
Was muss geändert werden, damit in der Userform das jüngste Datum oben ist, also absteigend sortiert. Die Excel-Liste selbst sollte nicht verändert werden.
Private Sub cmdSearch_Click()
Dim objSH As Worksheet
Dim rngSearch As Range
Dim strFirst As String
Dim Lz As Long
If txtSearch  "" Then
ListBox1.Clear
Set objSH = Sheets("Test")
With objSH
Lz = Application.Max(23, .Cells(Rows.Count, 2).End(xlUp).Row)
Set rngSearch = .Range("A23:F" & Lz).Find(What:=txtSearch, LookIn:=xlValues, LookAt:=xlPart, _
MatchCase:=False, After:=.Cells(23, 1))
If Not rngSearch Is Nothing Then
strFirst = rngSearch.Address
Do
If .Cells(rngSearch.Row, 3) = ComboBox1.Text Or ComboBox1.Text = "Alle" Then
ListBox1.AddItem .Cells(rngSearch.Row, 1)
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(rngSearch.Row, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(rngSearch.Row, 3)
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(rngSearch.Row, 5)
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(rngSearch.Row, 6)
ListBox1.List(ListBox1.ListCount - 1, 5) = .Cells(rngSearch.Row, 7)
End If
Set rngSearch = .Range("A23:F" & Lz).FindNext(rngSearch)
Loop While Not rngSearch Is Nothing And rngSearch.Address  strFirst
End If
End With
If ListBox1.ListCount = 0 Then ListBox1.AddItem "Kein Treffer!"
End If
End Sub
Besten Dank für die Hilfe und Servus, Walter

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

Betreff
Datum
Anwender
Anzeige
AW: Userform - Codeänderung für Sortierung
28.02.2018 13:26:33
Daniel
Hi
da gibt's mehrere Möglichkeiten:
Variante a)
du durchsucht die Liste nicht von oben nach unten, sondern von unten nach oben, dh. der unterste Eintrag in der Excelliste wird der erste Eintrag in der Listbox.
hierzu musst du in der .Find-Funktion zusätzlich den Parameter SearchDirection:=xlPrevious angeben
Variante b)
du belässt die Suchrichtung von oben nach unten, fügst die neuen Eintrage aber nicht unten an die Listbox an, sondern oben.
Hierzu gibst du bei .AddItem zusätzlich die Indexnummer an, an welcher der Eintrag hinzugefügt werden soll, in deinem Fall die 0.
Beim hinzufügen der weitern spaltenwerte nimmst du dann diesen Listindex:
Listbox1.AddItem ListBox1.AddItem .Cells(rngSearch.Row, 1), 0
ListBox1.List(0, 1) = .Cells(rngSearch.Row, 2)

Gruß Daniel
Anzeige
Danke Daniel, werde ich ausprobieren. Servus Walte
28.02.2018 14:51:42
WalterK

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige