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