View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
KR KR is offline
external usenet poster
 
Posts: 121
Default avoiding duplicates in listbox (added from another listbox)

There are three source lists that can populate the source listbox (changed
by clicking on one of three cmdbuttons), as the user needs to add names from
more than one of the lists. I've kept the lists separate because the
grouping is important (for example, they may need to pick one name from
/each/ list for a total of three unique names, but some names may be on 2 or
even all 3 lists).

So they may look at source list 1, add one (or more) names, then click to
see the second source list, add one (or more) names, etc. Since they can't
use the same person more than once, it is more reliable to programatically
prevent repeats rather than rely on the users to avoid duplicates.

Should I just add the names to an array in memory instead of trying to match
against the destination listbox? I can do that, I just thought there might
be a more elegant way to compare directly to the array that is already in
the listbox.

FWIW, the example referenced in the URL is even more elegant than what I'm
doing, as I'm not removing items from the source list (e.g. select with
replacement) because otherwise I'd have to keep track of each list even when
it wasn't showing (user switches lists, then switches back) and also which
list(s) the duplicates names are on - I'd have to check all three source
lists to remove a name that was selected, then know which list(s) to put the
names back on if it was unselected.

Thanks,
Keith

"Dave Peterson" wrote in message
...
How about deleting them from the first listbox when you add them to the

second.
It might be easier to code and more intuitive for the user.

This may give you an idea:
http://groups.google.com/groups?selm...BDD4%40msn.com

KR wrote:

I have a userform with a list of source names, a second list box in

which to
put selected names, and an add button to move the selected names to the
second listbox.

I need to avoid having the same name added more than once, and although

the
code below seems like a good idea to prevent duplicates, I'm getting a

type
mismatch. I think I'm mis-referencing the second element in the match
statement, but I'm not sure how to reference the list inside the second
listbox.

Please help? I'm using XL2003

Thanks,
keith

For i = 0 To frmEntry.lstSource.ListCount - 1
If frmEntry.lstSource.Selected(i) = True Then
If IsError(Application.Match(frmEntry.lstSource.List( i),
frmEntry.lstSelected.List, 0)) Then '*** mismatch error
frmEntry.lstSelected.AddItem frmEntry.lstSource.List(i)
End If
End If
Next i

--
The enclosed questions or comments are entirely mine and don't represent

the
thoughts, views, or policy of my employer. Any errors or omissions are

my
own.


--

Dave Peterson