Search code examples
excelvbauserform

Moving items from Listbox1 to Listbox2 code


So, Listbox1 is populated (from another sub, linked to range of cells in the workbook) and users can select (one at a time) items from that Listbox to be shown in Listbox2, using a Command Button (Add) to move them. I've nearly managed to get it perfect. My problem is that if a user only selects the final entry in Listbox1, all other possible entries in Listbox1 are removed (blanked out/not visible/cannot be selected).

I want only the entry which has been selected from Listbox1 to be removed from Listbox1 as it appears in Listbox2.

Here's the code:

Private Sub Add_Click()
Dim i as Integer
    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) = True Then
            Me.ListBox2.AddItem Me.ListBox1.List(i)
        End If
    Next i

    For i = Me.ListBox1.ListCount - 1 To 0 Step -1
        If Me.ListBox1.Selected(i) = True Then
            Me.ListBox1.RemoveItem i
        End If
    Next

End Sub

If there's anything obvious here, I'm really sorry. But these Listboxes have been driving me crazy for about 3 days now. Thanks in advance


Solution

  • It's a single-select list, so try adding Exit For inside each loop once you've hit the selected item:

    Private Sub Add_Click()
        Dim i as Long
    
        For i = Me.ListBox1.ListCount - 1 To 0 Step -1
            If Me.ListBox1.Selected(i) = True Then
                Me.ListBox2.AddItem Me.ListBox1.List(i) 
                Me.ListBox1.RemoveItem i
                Exit For
            End If
        Next
    
    End Sub