Mehrere selektierte Einträge aus einer Listbox entfernen
Applies To : VBA Listbox (RowsourceType=Valuelist)
Office XP
Eben gerade wollte ich mehrere selektierte Einträge aus einer Listbox in eine andere Listbox übertragen, und die selektierten Einträge aus der "source"-Listbox entfernen.
Mittels der Listbox.RemoveItem-Function sollte das ja auch kein Problem sein. Sollte man meinen...
Jaja, aber wer VBA kennt, der mag da schon etwas skeptisch sein, zurecht
Tatsächlich ist es so das die Listbox.ItemsSelected.Count-Property nach erstmaligen Aufruf der Listbox.RemoveItem-Function auf 0 gesetzt wird.(!!) Nachdem ich nach kurzem googlen zwar auf dieses "Phänomen" gestoßen bin, allerdings keine Lösungsansätze fand, hab ich dieses kleine Problemchen halt selbst gelöst.
Die kleine Sub entfernt die Selektierten-Einträge aus der der Sub übergebenden Listbox:
Office XP
Eben gerade wollte ich mehrere selektierte Einträge aus einer Listbox in eine andere Listbox übertragen, und die selektierten Einträge aus der "source"-Listbox entfernen.
Mittels der Listbox.RemoveItem-Function sollte das ja auch kein Problem sein. Sollte man meinen...
Jaja, aber wer VBA kennt, der mag da schon etwas skeptisch sein, zurecht
Tatsächlich ist es so das die Listbox.ItemsSelected.Count-Property nach erstmaligen Aufruf der Listbox.RemoveItem-Function auf 0 gesetzt wird.(!!) Nachdem ich nach kurzem googlen zwar auf dieses "Phänomen" gestoßen bin, allerdings keine Lösungsansätze fand, hab ich dieses kleine Problemchen halt selbst gelöst.
Die kleine Sub entfernt die Selektierten-Einträge aus der der Sub übergebenden Listbox:
Public Sub removeSelectedItemsFromListbox(ByVal c As Access.ListBox)
On Error GoTo errHandler
Dim i As Integer
Dim chosen() As Long
Dim l As Long
l = 0
ReDim chosen(0 To c.ItemsSelected.Count - 1)
For i = 0 To c.ListCount - 1
If c.Selected(i) Then
chosen(l) = c.Column(c.BoundColumn - 1, i)
l = l + 1
End If
Next i
For i = 0 To UBound(chosen)
For l = 0 To c.ListCount - 1
If c.ItemData(l) = chosen(i) Then
c.RemoveItem l
End If
Next l
Next i
errHandler:
Select Case Err.Number
Case 0
Case 9 'Array-Index Out Of Bounce
Exit Sub
Case 6014 'Listbox.RowSourceType is not Valuelist
Exit Sub
Case Else
MsgBox Err.Number & vbNewLine & Err.Description, vbCritical, "removeSelectedItemsFromListbox"
Exit Sub
End Select
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 28735
Url: https://administrator.de/contentid/28735
Ausgedruckt am: 22.11.2024 um 05:11 Uhr