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 zusammen,

habe ein Projekt in Anfgriff genommen und bräuchte mal unterstützung.
Ich habe in meiner UserForm eine ListBox und möchte diese sortieren. Das habe ich noch hinbekommen.
Allerdings hat meine Ausgangstabelle eine Überschriftenzeile. Jetzt wird mir beim Sortieren immer alles ab der
2. Zeile sortiert und landet dann aber in der ersten Zeile und meine Überschrift ist weg. Zudem bin ich mir nicht sicher,
ob die zugehörigen Spalten in der Tabelle mitsortiert werden. Muß ich da vielleicht noch was ergänzen?


Mein Code zum Sortieren sieht wie folgt aus:


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 :
'
ListeMA.Clear
'
' ListBox mit Werten aus Spalte A füllen :
'
For lZeile = 2 To [A2].End(xlDown).Row
Me.ListeMA.AddItem Cells(lZeile, 1)
Next
'
' ListBox sortieren :
'
For lIndxA = 0 To Me.ListeMA.ListCount - 1
For lIndxI = 0 To lIndxA - 1
If Me.ListeMA.List(lIndxI) > Me.ListeMA.List(lIndxA) Then
sTemp = Me.ListeMA.List(lIndxI)
Me.ListeMA.List(lIndxI) = Me.ListeMA.List(lIndxA)
Me.ListeMA.List(lIndxA) = sTemp
End If
Next lIndxI
Next lIndxA


End Sub


Danke schon mal im voraus


Chris
Antworten Top
#2
Hallo nochmal,


ich muß mich berichtigen, wenn meine Liste sortiert wird, dann nicht ab der 2. Zeile. Meine Überschrift verschwindet, weil er sie mit "wegsortiert".

Also Problem, er darf erst ab 2. Zeile sortieren und ich müsste wissen was mir fehlt das er alle Spalten meines Tabellenblatts mitsortiert. Sonst passen meine Daten nicht mehr.



Gruß Chris
Antworten Top
#3
Hallo Chris,
Deine Tabelle wird natürlich nicht mit sortiert.
Grundsätzlich würde ich:
- mir die Daten aus Spalte 1 erst mal in ein zweidimensionales Feld schreiben, in die 2. Spalte kommt die Zeilennummer.
- dann das Feld nach 1. Spalte sortieren, dabei 2. Spalte natürlich mitnehmen
- dann in ListBoxMA übernehmen.
Wird dann in ListBoxMA etwas selektiert, hast Du die passende Zeilennummer gleich bei der Hand.
Der Code dazu wäre:
PHP-Code:
Option Explicit
Dim Feld
() As String
Private Sub ListeMA_Click()
  MsgBox "gewähltes Element steht in Zeile " Feld(Me.ListeMA.ListIndex 12)
End Sub

Private Sub UserForm_Activate()
Dim j As LongAnzahl As Long

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

  ReDim Feld
(1 To [A2].End(xlDown).Row 11 To 2)
  For lZeile 2 To UBound(Feld1) + 1
    Feld
(lZeile 11) = Cells(lZeile1)
    Feld(lZeile 12) = lZeile
  Next
  
For lIndxA 1 To UBound(Feld1'Feld sortieren
    For lIndxI = 1 To lIndxA - 1
      If Feld(lIndxI, 1) > Feld(lIndxA, 1) Then
        For j = 1 To 2
          sTemp = Feld(lIndxI, j)
          Feld(lIndxI, j) = Feld(lIndxA, j)
          Feld(lIndxA, j) = sTemp
        Next j
      End If
    Next lIndxI
  Next lIndxA
  ListeMA.List = Feld ' 
Feld in Listbox übernehmen

End Sub 
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#4
Code:
Private Sub Userform_Initialize()
   sheet1.cellls(1).currentregion.columns(1).sort sheet1.cells(1),,,,,,,-1
   Listbox1.List= sheet1.cellls(1).currentregion.columns(1).Value
End Sub

Schau mal: https://www.snb-vba.eu/VBA_Fill_combobox...ox_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
Shocked 
Kürzer und genialer als snb: Geht nicht! :18:
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#6
(04.12.2020, 16:47)AlterDresdner schrieb: Kürzer und genialer als snb: Geht nicht! :18:

Doch!
Wenn er statt
cellls(1)
cells(1)

schreiben würde.
:21: :19:
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
#7
Hallo,

Danke schon mal. werde es am Wochenende mal probieren ob ich damit irgendwie was anfangen kann. Beschäftige mich erst seit 3-4 Wochen excel.
Aber das wird schon. Ich geb dann Rückmeldung obs Funktioniert.



Gruß Chris
Antworten Top
#8
Hallo zusammen,

habe jetzt eine funktionierende Lösung um meine eine ListBox zu sortieren, die aus einer einzigen Spalte besteht.
In einem anderen Pörojekt hat meine Listbob allerdings 9 Spalten und ich möchte nach 2. Spalte (Datrum) sortieren.
Kann ich da den Code etwas umbauen?

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



For lIndxA = 0 To Me.ListeMA.ListCount - 1
For lIndxI = 0 To lIndxA - 1
If Me.ListeMA.List(lIndxI) > Me.ListeMA.List(lIndxA) Then
sTemp = Me.ListeMA.List(lIndxI)
Me.ListeMA.List(lIndxI) = Me.ListeMA.List(lIndxA)
Me.ListeMA.List(lIndxA) = sTemp
End If
Next lIndxI
Next lIndxA


Gruß Chris
Antworten Top
#9
Schau mal: https://www.clever-excel-forum.de/Thread...#pid216881
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


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