![]() |
Capturing Listbox Selections
Hi,
I've got two multi-select listboxes on a userform. The idea is that listbox A contains all possible items and listbox B is a subset of A defined by the user. I'm struggling with capturing the selected values in A so that they can be copied to B. Here is my code: With frmManageGroups.lbxA For x = 0 To .ListCount - 1 If .Selected(x) = True Then frmManageGroups.lbxB.AddItem .List(.ListIndex) .Selected(x) = False End If Next End With The way that this is written, it only copies the last item selected in listbox A. For example, if the listbox A contains the letters A,B, and C as its items and the user selects A and C, my code copies the letter C twice to listbox B instead of the letters A and C. Can anybody help? Thanks, Randy |
Capturing Listbox Selections
Not usre what you were really tryiing to do. this is how I prevent
duplicates from getting into a Listbox. I checd the with statement from A to b. I'm checking to see if the item is already in the list box B With frmManageGroups.lbxB For x = 0 To .ListCount - 1 Found = False If frmManageGroups.lbxB = .List(x) Then Found = True exit for End If Next if found = False then frmManageGroups.lbxB.AddItem end if End With "Randy" wrote: Hi, I've got two multi-select listboxes on a userform. The idea is that listbox A contains all possible items and listbox B is a subset of A defined by the user. I'm struggling with capturing the selected values in A so that they can be copied to B. Here is my code: With frmManageGroups.lbxA For x = 0 To .ListCount - 1 If .Selected(x) = True Then frmManageGroups.lbxB.AddItem .List(.ListIndex) .Selected(x) = False End If Next End With The way that this is written, it only copies the last item selected in listbox A. For example, if the listbox A contains the letters A,B, and C as its items and the user selects A and C, my code copies the letter C twice to listbox B instead of the letters A and C. Can anybody help? Thanks, Randy |
Capturing Listbox Selections
frmManageGroups.lbxB.AddItem .List(.ListIndex)
You don't want to use ListIndex there. In a multi-select list box, ListIndex is the item that has the *focus* in the UI, so if 2 items have been selected, but C has the focus (whether selected or not!), you'll end up with 2 C's. frmManageGroups.lbxB.AddItem .List(x) HTH, "Randy" wrote in message ups.com... Hi, I've got two multi-select listboxes on a userform. The idea is that listbox A contains all possible items and listbox B is a subset of A defined by the user. I'm struggling with capturing the selected values in A so that they can be copied to B. Here is my code: With frmManageGroups.lbxA For x = 0 To .ListCount - 1 If .Selected(x) = True Then frmManageGroups.lbxB.AddItem .List(.ListIndex) .Selected(x) = False End If Next End With The way that this is written, it only copies the last item selected in listbox A. For example, if the listbox A contains the letters A,B, and C as its items and the user selects A and C, my code copies the letter C twice to listbox B instead of the letters A and C. Can anybody help? Thanks, Randy |
Capturing Listbox Selections
You're right, George. I just needed (x) and not (.ListIndex).
Thanks to both of you for your advice. Randy |
All times are GMT +1. The time now is 09:34 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com