Deselect Items in MultiSelect Listbox without looping
Consider this: Multiselect Listbox. I simply used the following code to generate it:
Private Sub UserForm_Initialize() For i = 1 To 100000 ListBox1.AddItem i Next i End Sub
Now imagine the following: I have some 50 entries selected and after my work is done, I would like to deselect them. The only options that I have are either I
- 1) Manually unselect them OR…
- 2) Write a code which will loop through the entries and deselect them like this?
For i = 1 To ListBox1.ListCount ListBox1.Selected(i - 1) = False Next i
- Wrong! There is a third way.
I see two problems with the 2nd way:
- 1) Looping takes time if Listbox contains huge data
- 2) It causes a flicker if Listbox contains huge data
Here is an extraordinary way to do it, which I discovered it on my own. I quickly did a search on the web and couldn’t find a single website which suggested this:
Private Sub CommandButton1_Click() '~~> Reset selected items to deselected by changing it's selection behavior ListBox1.MultiSelect = fmMultiSelectSingle ListBox1.MultiSelect = fmMultiSelectMulti End Sub