Listbox sortieren
#1
Hallo,

ich habe eine Listbox die den Inhalt einer Spalte darstellt. Jetzt habe ich einen Code eingefügt, der die Listbox sortieren soll.
Leider sortiert der Code nach Alphabet, sprich: 1, 11, 2, 3  usw.

Wie erreiche ich, das er das nach der richtigen zahl sortiert??

Hier der Code:
Code:
Private Sub UserForm_Activate()

Dim lZeile As Long ' For/Next Zeilen-Index
Dim lIndxA As Long ' For/Next Index - außen
Dim lIndxI As Long ' For/next Index - innen
Dim sTemp As String ' temporärer Zwischenspeicher

'
' ListBox zuvor löschen :
'
ListBox1.Clear
'
' ListBox mit Werten aus Spalte A füllen :
'
For lZeile = 2 To [A65536].End(xlUp).Row
Me.ListBox1.AddItem Cells(lZeile, 1)
Next
'
' ListBox sortieren :
'
For lIndxA = 0 To Me.ListBox1.ListCount - 1
 For lIndxI = 0 To lIndxA - 1
    If UCase(Me.ListBox1.List(lIndxI)) > UCase(Me.ListBox1.List(lIndxA)) Then
        sTemp = Me.ListBox1.List(lIndxI)
        Me.ListBox1.List(lIndxI) = Me.ListBox1.List(lIndxA)
        Me.ListBox1.List(lIndxA) = sTemp
    End If
 Next lIndxI
Next lIndxA

End Sub
Top
#2
Hallo Mario, Tante Google weiss Rat! Einfach: "Listbox sortieren" und dann selber suchen.
Gruss
Top
#3
Hallo,
 ich habe Google schon durchforstet, das ist immer mein erster Schritt bevor ich hier was poste!
 Da habe ich diesen ja zb her.
Aber es geht fast nur um das alphabetische sortieren.
Top
#4
(29.09.2017, 09:44)M.Wichmann schrieb: Aber es geht fast nur um das alphabetische sortieren.
Hallo Mario, aber nicht nur, wie Du richtig feststellst. Du musst nur noch etwas schrauben. das kannst Du.
Gruss
Top
#5
Moin!
  1. Wenn die Listbox-Inhalte aus einem zusammenhängenden Bereich gebildet werden, empfiehlt sich statt der (sehr) langsamen .AddItem-Methode die .List-Eigenschaft zu benutzen.
    (Umfangreiches) Lesefutter:
    http://www.snb-vba.eu/VBA_Fill_combobox_listbox_en.html
  2. Stehen ausschließlich "Text-Zahlen" in der Listbox?
    Dann solltest Du den Text mittels CDbl() in eine Zahl umwandeln (innerhalb der Sortierung).
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Hallo,

leider ist mein Englisch nicht so gut um dein Lesefutter, zu verstehen.

In der Spalte stehen nur durch die UF selbst erzeugte Zahlen, als eindeutige ID( Zahl der aktuellen Zeile)
Leider werden diese aber dann immer etwas durcheinander gewürfelt da die Dahlen dann zb nach datum sortiert werden.
Top
#7
Hallo Mario,

vielleicht so?

Code:
Private Sub UserForm_Activate()

   Dim lZeile As Long ' For/Next Zeilen-Index
   Dim objArray As Object
   Dim vntArray As Variant
  
   Set objArray = CreateObject("System.collections.arraylist")
   '
   ' ListBox zuvor löschen :
   '
   ListBox1.Clear
   '
   ' Array mit Werten aus Spalte A füllen :
   '
   For lZeile = 1 To [A65536].End(xlUp).Row
      objArray.Add Cells(lZeile, 1).Value
   Next
   'array sortieren
   objArray.Sort
  
   'Array in Listbox
   ListBox1.List = objArray.toarray


End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#8
Hallo und danke Stefan,

leider kommt hier:

Code:
objArray.Sort
 ein Fehler
Top
#9
Hallo Mario,

könntest Du die Datei hier hochladen?
Gruß Stefan
Win 10 / Office 2016
Top
#10
Die komplette ist schwierig, da die sehr Umfangreich ist, und nicht einfach zu anonymisieren.

Die Tabelle und den code der UF reicht ? Obwohl ich dann nicht sagen kann ob alles läuft.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste