ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Capturing Listbox Selections (https://www.excelbanter.com/excel-programming/397507-capturing-listbox-selections.html)

Randy[_2_]

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


joel

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



George Nicholson

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




Randy[_2_]

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