Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
944to948
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
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ListBox sortieren dauert zu lange

ListBox sortieren dauert zu lange
23.01.2008 08:22:00
otto
Hi,
mit folgendem Code(aus dem Forum) sortiere ich eine Listbox. Funktioniert auch, aber die Listbox hat 16 Spalten und ab 100 Zeilen ist die Sortierzeit nicht mehr vertretbar.
Mit 260 Zeilen hat es z.B. über 1 Minute gedauert.
Hat jemand einen schnelleren Code, oder gibt es auch die Möglichkeit eine Listbox zu filtern? Ich habe über jeder Spalte eine Textbox in die ich ein Kriterium eingeben könnte.

Sub SortBox(ListBox1 As Control, intSpalten As Integer, _
intSpalte As Integer, Optional bytWie As Byte = 3)
' So DIS 28.04.05
' SortBox sortiert nicht gebundene List- und Comboboxen. Gebundene List- und Comboboxen
' (Angabe bei RowSource oder ListFillRange) können NICHT sortiert werden.
' cltBox     : Name der Listbox die sortiert werden soll.
' intSpalten : Wieviele Spalten sollen mit sortiert werden. Sollte der Anzahl der Spalten
'              in der Listbox entsprechen
' intSpalte  : Nach welcher Spalte soll sortiert werden.
' bytWie     : 1 oder Nicht angegeben als Text
'            : 2 als Zahl, dann muß die ganze Spalte Zahlen enthalten.
'            : 3 als Datum, dann muß die ganze Spalte Datumwerte enthalten.
' Aufruf zum Beispiel so: ListBox1 mit 7 Spalten, Sortierung nach Spalte 1 Sortierordnung Text
' SortBox ListBox1, 7, 1  oder SortBox ListBox1, 7, 1, 1
' Oder so    : Listbox17 mit 2 Spalten, Sortierung nach Spalte 2 Sortierordnung Zahlen
' SortBox ListBox17, 2, 2, 2
Dim intLast As Integer, intNext As Integer, intCounter As Integer, intFehler As Integer
Dim strTmp As String, strFehlertext As String
Dim variLast As Variant, variNext As Variant
On Error GoTo errorhandler
intFehler = 0
With ListBox1
For intLast = 0 To .ListCount - 1
For intNext = intLast + 1 To .ListCount - 1
Select Case bytWie
Case 1
intFehler = 0
variLast = CStr(.List(intLast, intSpalte - 1))
variNext = CStr(.List(intNext, intSpalte - 1))
Case 2
intFehler = 1
variLast = CDbl(.List(intLast, intSpalte - 1))
variNext = CDbl(.List(intNext, intSpalte - 1))
Case 3
intFehler = 2
variLast = CDate(.List(intLast, intSpalte - 1))
variNext = CDate(.List(intNext, intSpalte - 1))
End Select
intFehler = 0
If variLast > variNext Then
For intCounter = 0 To intSpalten - 1
strTmp = CStr(.List(intLast, intCounter))
.List(intLast, intCounter) = CStr(.List(intNext, intCounter))
.List(intNext, intCounter) = strTmp
Next intCounter
End If
Next intNext
Next intLast
End With
Exit Sub
errorhandler:
Dim cltBox
Select Case intFehler
Case 0
strFehlertext = "In der Listbox Sortierung ist ein Fehler aufgetreten !"
Case 1
strFehlertext = "Nicht alle Werte in der zu sortierenden Spalte sind Zahlen !"
Case 2
strFehlertext = "Nicht alle Werte in der zu sortierenden Spalte sind Datumswerte !"
Case Else
strFehlertext = "Unerwarteter Fehler !"
End Select
MsgBox strFehlertext & " Bitte informieren Sie 'So' ! " & vbCr & vbCr & _
"Fehler aufgetreten in " & cltBox.Name & " !" & vbCr & _
"Fehlernummer = " & Err.Number & vbCr & _
"Fehlerbeschreibung = " & Err.Description & vbCr & _
"Fehlersource = " & Err.Source, vbCritical, " Meldung vom Makro SortBox !"
End Sub


Gruß
otto

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox sortieren dauert zu lange
23.01.2008 08:53:57
Peter
Hallo Otto,
wie oft musst du die ListBox denn sortieren?
Vielleicht wäre es günstiger die Daten der ListBox in einem Tabellenblatt zu sortieren und dann sortiert neu in die ListBox einzulesen.
Gruß Peter

AW: ListBox sortieren dauert zu lange
23.01.2008 09:00:16
otto
Hi,
geht leider nicht, weil ich in der UF in einem Suchfeld einen Begriff eingebe der irgendwo in der Tabelle stehen kann. Aus diesem Grund kann ich die Tabelle nicht im Vorfeld filten.
otto

AW: ListBox sortieren dauert zu lange
23.01.2008 09:44:22
Rudi
Hallo,
1. lies .List in ein Array ein, sortiere dieses und schreibe es wieder zurück.
2. eine vernünftige Sortierroutine findest du hier:
http://www.online-excel.de/excel/singsel_vba.php?f=97
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige