Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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

Userform1 Sortieren

Userform1 Sortieren
19.10.2021 06:51:46
Oraculix
Hallo
In meiner Userform1 kann ich Wählen welche Spalte ich sortieren möchte was auch funktioniert.
Nur leider reichen meine Kenntnisse nicht die Sortierung so zu Programieren das die Userform1 nicht immer neu gestartet werden muss.
Das Problem:
Das Sortieren der Spaten dauert zu lange bei 3000 Einträgen und die Userform1 muss immer neu gestartet werden sonst wird sie nicht aktualisiert. Die Sortierung wird nur Angezeigt wenn ich die Userform schließe und wieder öffne.
Frage :
Wie kann ich das schließen und wieder öffnen umgehen damit es nicht so lange dauert das Sortieren?
Bzw. wie kann ich den Code Beschleunigen?
https://www.herber.de/bbs/user/148684.xlsm
'Sortiert Spalte B A-Z

Private Sub CommandButton17_Click()
Application.EnableEvents = False
Application.Goto Reference:="FilmeAnsehen"
ActiveWorkbook.Worksheets("FilmeAnsehen").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("FilmeAnsehen").Sort.SortFields.Add2 Key:=Range( _
"B2:B5010"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("FilmeAnsehen").Sort
.SetRange Range("A1:C5010")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B1").Select
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
Range("B2").Select
Repaint
Unload Me
UserForm1.Show
Application.EnableEvents = True
End Sub
Gruß
Oraculix

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform1 Sortieren
19.10.2021 07:21:53
Klaus
Hi Oraculix,
statt die Userform (langsam) per Schleife zu füllen, setze einmal die RowSource Eigenschaft. Ich habe mir bei der Gelegenheit erlaubt, den Makrorekordercode zu entschlacken.

Private Sub CommandButton17_Click()
Dim lRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.Goto Reference:="FilmeAnsehen" 'ist das nötig?
End With
With Sheets("FilmeAnsehen")
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=.Range("B2:B" & lRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SetRange .Range("A1:C" & lRow)
.Sort.Header = xlYes
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
End With
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
UserForm1.Lst_Treffer.RowSource = "FilmeAnsehen!A1:B" & lRow
End Sub
Test mit 4000 Einträgen: Schleife etwa 3 Sekunden, RowSource 1/10 Sekunde Codedurchlaufzeit.
LG,
Klaus M.
Anzeige
Genial super schnell Vielen Dank!!!!
19.10.2021 07:35:18
Oraculix
Genial super schnell Vielen Dank.
Wie muss das Macro geändert werden für die Spalte A
Danke
Gruß
Oraculix
AW: Genial super schnell Vielen Dank!!!!
19.10.2021 07:49:10
Klaus

Sort.SortFields.Add2 Key:=.Range("B2:B" & lRow)
Kommst du selbst drauf wie du es für A änderst, oder? :-)
LG,
Klaus M.
AW: Genial super schnell Vielen Dank!!!!
19.10.2021 07:57:13
Oraculix
Danke
mir war nur diese Zeile etwas unklar
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
lRow = .Cells(.Rows.Count, 0).End(xlUp).Row 'Soll ich hier auf 0 Stellen für Spate A?
Danke
Gruß
Oraculix
AW: Genial super schnell Vielen Dank!!!!
19.10.2021 08:24:58
Klaus
Hallo Oraculix,
nein - die 1 steht bereits für Spalte A. Es ist doch egal, ob ich die letzte Zeile in A oder B ermittele, wenn A und B gleich lang sind.
LG,
Klaus M.
Anzeige
AW: Genial super schnell Vielen Dank!!!!
19.10.2021 08:29:39
Oraculix
Ah ok Danke jetzt verstehe ich das dachte es wählt die Spalte die Sortiert wird.
Bin halt noch immer Anfänger was sowas betrifft.
Gruß
Oraculix

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige