When you remove items from a ListBox or a ComboBox (or, also, Rows from a
Range), you should work your way from the bottom up, not top down. That is,
your loop should go from ListCount-1 to 0, not from 0 to ListCount-1.
Otherwise, your index will get screwed up as you delete an item. For
example, if you select Item(5) and delete it, what was originally Item(6) is
now Item(5). If you then delete Item(6), you are deleting what was
originally Item(7). All this can be avoided by starting with ListCount-1 and
moving down to 0. E.g.,
Dim N As Long
For N = .ListCount-1 To 0 Step -1
If Something(N) = True Then
.RemoveItem N
End If
Next N
--
Cordially,
Chip Pearson
Microsoft Most Valuable Professional
Excel Product Group, 1998 - 2008
Pearson Software Consulting, LLC
www.cpearson.com
(email on web site)
"BigPig" <(E-Mail Removed)> wrote in message
news:66001489-809A-41CC-B233-(E-Mail Removed)...
> Hi All,
>
> Can't figure out why the following script won't remove selected items
> properly:
>
> With frm_map
>
> Dim X As Integer
> For X = 0 To .lst_map_prop_for_trans.ListCount - 1
> On Error Resume Next
> If .lst_map_prop_for_trans.Selected(X) = True Then
> .lst_map_trans_to.AddItem .lst_map_prop_for_trans.List(X, 0)
> .lst_map_trans_to.List(.lst_map_trans_to.ListCount - 1, 0) =
> .lst_map_prop_for_trans.List(X, 0)
> .lst_map_trans_to.List(.lst_map_trans_to.ListCount - 1, 1) =
> .lst_map_prop_for_trans.List(X, 1)
> .lst_map_trans_to.List(.lst_map_trans_to.ListCount - 1, 2) =
> .lst_map_prop_for_trans.List(X, 2)
> .lst_map_trans_to.List(.lst_map_trans_to.ListCount - 1, 3) =
> .lst_map_prop_for_trans.List(X, 3)
> .lst_map_prop_for_trans.RemoveItem (X)
> End If
>
> Next X
> X = X + 1
>
> End With
>
> Other info: both listboxes are in separate frames (in the same form) and
> are
> set to multiselect. The issue is that when I select one item to "transfer"
> it
> works, but with two or more items selected the first or half of the items
> selected will move, but not the second or second half of the items
> selected.
>
> Any and all advice would be greatly appreciated.
>
> Thank you.