AW: Listbox - Problem
05.08.2016 12:01:57
Benedikt
Hallo Basti,
habe diesen Code auf Commandbutton5 gesteckt, aber vermutlich muss der auch in die Userform_initialize?
Dim iLast As Integer, iNext As Integer
Dim iTmp1
Dim iTmp2
With LBB
For iLast = 0 To .ListCount - 1
For iNext = iLast + 1 To .ListCount - 1
If .List(iLast, 1) > .List(iNext, 1) Then
iTmp1 = .List(iLast)
iTmp2 = .List(iLast, 1)
.List(iLast) = .List(iNext)
.List(iLast, 1) = .List(iNext, 1)
.List(iNext) = iTmp1
.List(iNext, 1) = iTmp2
End If
Next iNext
Next iLast
LBB.ColumnCount = 1
End With
Deinen letzten Codeschnipsel habe ich mit eingebaut
Dim lZeile As Long
Dim lIndxA As Long
Dim lIndxI As Long
Dim sTemp As String
Dim i As Integer
For i = 1 To 6
Me.Controls("Textbox" & i) = ""
Next i
ListBox1.Clear
LBB.Clear
lZeile = 2
Do While Trim(CStr(Sheets(3).Cells(lZeile, 1).Value)) ""
ListBox1.AddItem Sheets(3).Cells(lZeile, 1).Value & ", " & Sheets(3).Cells(lZeile, 2)
If Sheets(3).Cells(lZeile, 6).Value = "B" Then
LBB.AddItem Sheets(3).Cells(lZeile, 1).Value
LBB.ColumnCount = 2
LBB.List(LBB.ListCount - 1, 1) = Sheets(3).Cells(lZeile, 7).Value
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
For lIndxA = 0 To Me.ListBox1.ListCount - 1
For lIndxI = 0 To lIndxA - 1
If Me.ListBox1.List(lIndxI) > 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
Aber nun kommen folgende Fehler:
Beim Laden der MAV wird die LBB nach wie vor mit den Nachnamen befüllt, von oben nach unten des Sheets 3, wenn sie die Zugehörigkeit B haben. Nun werden die Zahlen rechts neben den Namen angezeigt und zwar so wie sie in Sheets(3) Spalte 7 stehen. Könntest du mir noch verraten, wie die Namen anhand der Zahl in der LBB sortiert werden können? Wenn ich nun per Spinbutton den Namen hochschiebe, wird die Zahl nicht korrekt angezeigt.
MA1 ist nach dem Laden logischerweise auf Platz 3. Die Zahl ist auch logisch = 1. Bei Spinbutton-up ist MA1 auf Platz 2, Zahl = 3 und nochmal dann auf Platz 1 mit Zahl = 2. MA3 ist auf Platz 2 mit Zahl 3 und MA2 auf Platz 3 mit Zahl 1. Sie geben also an sich ihre letzte Zahl an den getauschten Namen weiter, richtig? Aber ich denke, dass man noch irgendwo ein -1 setzen muss?
Wenn ich übrigens den CB5 klicke, wo ich deinen obersten Code rein habe, was logischerweise falsch ist, dann lädt er die Liste genau so, wie wenn ich es öffne, aber ohne Zahlen.
Dann fehlt nur noch, dass die durch den SB veränderte Position eines MA's auch wieder an die Spalte 7 des Sheets 3 zurückgegeben wird, damit die neue Reihenfolge auch gespeichert wird.
Gruß Benedikt