Excel VBA – usuwanie zaznaczonych pozycji ListBox’a

No Comments

Dzisiaj tylko szybki snippet. Mamy sobie listę typu ListBox oraz przycisk, który ma usuwać zaznaczone na liście pozycje. Z racji, że możemy mieć kilka takich zestawów, przyda się uniwersalna funkcja, niezależna od konkretnej listy.

Do przycisku przypisujemy wywołanie:

Private Sub removeOnTheList_Click()
    removeSelected theList 'wywolanie wlasciwe

    'plus maly dodatek:
    If theList.ListCount = 0 Then
        removeOnTheList.Enabled = False
    End If
End Sub

Sama funkcja zaś jest prosta jak świński ogon:

1
2
3
4
5
6
7
Sub removeSelected(myList As MSForms.ListBox)
    For a = myList.ListCount - 1 To 0 Step -1
        If myList.Selected(a) Then
            myList.RemoveItem (a)
        End If
    Next
End Sub

WAŻNE: należy pamiętać (zupełnie jak przy filtrowaniu, że elementy typy ListBox jako argumenty funkcji/procedury deklarujemy ze wskazaniem ich obiektu nadrzędnego – tu MSForms.

Leave a Reply

Your email address will not be published. Required fields are marked *