Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Grüße Mario  Angel
Antworten Top
#2
Hallo Mario, Tante Google weiss Rat! Einfach: "Listbox sortieren" und dann selber suchen.
Gruss
Gruss

Ein Lob ist der Lohn
Ein Tadel der Ansporn
Antworten 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.
Grüße Mario  Angel
Antworten Top
#4
(29.09.2017, 08: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
Gruss

Ein Lob ist der Lohn
Ein Tadel der Ansporn
Antworten 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)
Antworten 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.
Grüße Mario  Angel
Antworten 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
Antworten Top
#8
Hallo und danke Stefan,

leider kommt hier:

Code:
objArray.Sort
 ein Fehler
Grüße Mario  Angel
Antworten Top
#9
Hallo Mario,

könntest Du die Datei hier hochladen?
Gruß Stefan
Win 10 / Office 2016
Antworten 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.
Grüße Mario  Angel
Antworten Top


Gehe zu:


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