misterdemeanor
Goto Top

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 face-wink

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

Content-Key: 28735

Url: https://administrator.de/contentid/28735

Printed on: April 25, 2024 at 00:04 o'clock