Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 77
Default additem removeitem

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.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 77
Default additem removeitem

I'm sorry I mis-spoke

I meant to say that the script will remove the first item or first half of
items selected, versus all of them.

Sorry.

"BigPig" wrote:

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.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default additem removeitem

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" wrote in message
...
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.


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 77
Default additem removeitem

Chip,

Thank you very much! And for the great explanation.
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,202
Default additem removeitem

Try removing them the in reverse order...

For X = .lst_map_prop_for_trans.ListCount - 1 To 0 Step -1

Rick


"BigPig" wrote in message
...
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.




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 77
Default additem removeitem

Rick,

Just read your response, thank you!

"Rick Rothstein (MVP - VB)" wrote:

Try removing them the in reverse order...

For X = .lst_map_prop_for_trans.ListCount - 1 To 0 Step -1

Rick


"BigPig" wrote in message
...
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.



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default additem removeitem

First, I'd remove the "On error resume next" line. It can be hiding the error
from you.

Second start at the bottom of the list and work your way to the top:

For X = .lst_map_prop_for_trans.ListCount - 1 to 0 step -1



BigPig wrote:

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.


--

Dave Peterson
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 77
Default additem removeitem

Hi Dave,

Thank you for your response! I hadn't thought about the "On error..."

Thank you.

"Dave Peterson" wrote:

First, I'd remove the "On error resume next" line. It can be hiding the error
from you.

Second start at the bottom of the list and work your way to the top:

For X = .lst_map_prop_for_trans.ListCount - 1 to 0 step -1



BigPig wrote:

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.


--

Dave Peterson

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Using RemoveItem with a combobox Dan Perkins Excel Programming 3 November 18th 06 12:08 PM
RemoveItem resetting Value in ComboBox Drummer361 Excel Programming 2 August 16th 06 06:53 PM
MSFlexGrid RemoveItem gti_jobert[_132_] Excel Programming 2 June 21st 06 11:30 AM
RemoveItem - ComboBox Mike Excel Programming 1 May 16th 06 04:51 PM
.additem Robert Couchman[_4_] Excel Programming 3 February 20th 04 02:47 PM


All times are GMT +1. The time now is 12:41 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"