De-selecting a Selected Item in a Single-Select Listbox

Article contributed by Ibby

Single-select ListBoxes (ie: those with the MultiSelect property set to 0 - fmMultiSelectSingle) don't have a straightforward method for de-selecting an item. You need to create this behaviour with code. Just copy this code into the UserForm module and change all instances of "ListBox1" to the name of your ListBox.

Private iClickedItem As Long

Private Sub ListBox1_MouseDown(ByVal Button As Integer, _
        ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    ' Get index of clicked item in ListBox
    iClickedItem = ListBox1.ListIndex

End Sub

Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift _
        As Integer, ByVal X As Single, ByVal Y As Single)

    ' If clicked item is selected, de-select it
    If ListBox1.ListIndex = iClickedItem Then
        ListBox1.ListIndex = -1
    End If

End Sub