LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,290
Default Last list item selected in a Multi-Select list box?

Option Explicit
Private colOne As VBA.Collection
Private strItem As String
'Jim Cone - San Francisco, USA - 12/05/2005
'Displays a message box with the last item the user selected in
'a multi-select listbox.
'Requires a UserForm with two Command buttons and a ListBox.
'Assumes ListBox is filled using the RowSource property.
'Code goes in the UserForm code module.

'Add a caption to this button..."Exit"
Private Sub CommandButton1_Click()
Me.Hide
Set colOne = Nothing
Unload Me
End Sub

'Add a caption to this button..."Last Selected"
Private Sub CommandButton2_Click()
MsgBox strItem
End Sub

Private Sub ListBox1_Change()
Dim lngC As Long
Dim lngTotal As Long
Dim colTwo As VBA.Collection
Set colTwo = New Collection
strItem = "None selected"
lngTotal = ListBox1.ListCount - 1

For lngC = 0 To lngTotal
'Add any new selected items to Collection One.
On Error Resume Next
If ListBox1.Selected(lngC) Then
colOne.Add ListBox1.List(lngC), ListBox1.List(lngC)
End If
On Error GoTo 0
Next 'lngC

For lngC = 0 To lngTotal
'Collection Two is empty - add just the currently selected items
If ListBox1.Selected(lngC) Then
colTwo.Add ListBox1.List(lngC), ListBox1.List(lngC)
End If
Next 'lngC

'No item was deselected
If colTwo.Count = colOne.Count Then
strItem = colOne.Item(colOne.Count)
Else
'An item was deselected
For lngC = 1 To colOne.Count
On Error Resume Next
colTwo.Add colOne.Item(lngC), colOne.Item(lngC)
If Err.Number = 0 Then
colOne.Remove colOne.Item(lngC)
strItem = colOne.Item(colOne.Count)
Exit For
End If
On Error GoTo 0
Next
End If

'Empty the collection - this may not be required
For lngC = colTwo.Count To 1 Step -1
colTwo.Remove lngC
Next
'This is required.
Set colTwo = Nothing
End Sub

Private Sub UserForm_Initialize()
Set colOne = New Collection
End Sub
'------------------------------------------

"Brian" wrote in message...
I posted this late Friday with no good responses.
I'm trying to figure out which item in a multi select list box was last
selected. Not the last item in the list, but the last item selected.
For example... A list box with three items "List 1", "List 2", and "List
3". The user could select "List 3" and then "List 1". I would like the
algorithm to tell me that on the second Listbox change event... that "List
1" was selected.
Then on the flip side.... the logic would have to know whether an item was
deselected as well.
I played around with using a couple of collection objects... but couldn't
come up with a good way to compare the two collections to find the
difference... which would in theory tell me what object had changed in the
listbox.
Any thoughts?
Thanks,
Brian


 
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
Select a list in 1 cell by selecting an item from another list in Jonners Excel Discussion (Misc queries) 2 July 10th 09 10:31 PM
List and subtotal selected items, then print separate item list TitanG Excel Worksheet Functions 0 September 8th 08 09:07 PM
Conditional formatting - multi-item text list String Excel Worksheet Functions 4 August 5th 06 02:06 PM
Extract values from a multi-select multi-column list-box Peter[_20_] Excel Programming 5 September 28th 03 04:04 PM
Multi Select List Box jacqui Excel Programming 0 July 22nd 03 12:12 PM


All times are GMT +1. The time now is 05:07 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"