MultiSelect ListBox

G

Guest

I have a ListBox populated thru code as:
Sub UserForm_Initialize()
With ListBox1
..AddItem "AttyAdec"
..AddItem "2004"
..AddItem "Dialer"
..AddItem "Blank"
End With
ListBox1.ListIndex = 0
End Sub
With my OK Command as follows:
Private Sub OKButton_Click()


Msg = "You selected" & vbCrLf
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Msg = Msg & ListBox1.List(i) & vbCrLf
End If
Next i
MsgBox Msg


If ListBox1.ListIndex = 0 Then

ChDir "C:\Documents and Settings\A092048\Desktop"
Workbooks.Open Filename:= _
"C:\Documents and Settings\A092048\Desktop\AttyAdec 090304.xls"

End If

If ListBox1.ListIndex = 1 Then

Workbooks.Open Filename:="C:\Documents and
Settings\A092048\Desktop\2004.xls"
End If

If ListBox1.ListIndex = 2 Then

Workbooks.Open Filename:= _
"C:\Documents and Settings\A092048\Desktop\Dialer.xls"
End If

Unload UserForm1
End Sub

My ListBox is set to 1 = fmMultiSelectMulti but when I select more than one
file, only the last file selected will open. Is there something else I need
to change for it to open more than one file at a time?
 
D

Dick Kusleika

Stephanie

With a MultiSelect listbox, the ListIndex property will return which row has
the focus. It looks like it's just the last row, because that's the row
you're selecting last and the one that has the focus. You need to use the
Selected property like you do in the first loop.

I would suggest that you make your listbox a two-column listbox, with the
second column width = 0 (hidden) and containing the file you want to open.
Then you could

With Me.ListBox1
For i = 0 to .ListCount - 1
If .Selected(i) Then
Workbooks.Open .Column(1,i)
End If
Next i
End With

For more info on multicolumn, multiselect listboxes, see
http://www.dicks-blog.com/archives/2004/06/14/retrieve-values-from-a-multi-columnselect-listbox/
http://www.dicks-blog.com/archives/2004/06/11/retrieve-values-from-a-multicolumn-listbox/
http://www.dicks-blog.com/archives/2004/05/10/populating-multi-column-listboxcombobox/
 
D

Dave Peterson

You have a reply in .misc, too.
I have a ListBox populated thru code as:
Sub UserForm_Initialize()
With ListBox1
.AddItem "AttyAdec"
.AddItem "2004"
.AddItem "Dialer"
.AddItem "Blank"
End With
ListBox1.ListIndex = 0
End Sub
With my OK Command as follows:
Private Sub OKButton_Click()

Msg = "You selected" & vbCrLf
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Msg = Msg & ListBox1.List(i) & vbCrLf
End If
Next i
MsgBox Msg

If ListBox1.ListIndex = 0 Then

ChDir "C:\Documents and Settings\A092048\Desktop"
Workbooks.Open Filename:= _
"C:\Documents and Settings\A092048\Desktop\AttyAdec 090304.xls"

End If

If ListBox1.ListIndex = 1 Then

Workbooks.Open Filename:="C:\Documents and
Settings\A092048\Desktop\2004.xls"
End If

If ListBox1.ListIndex = 2 Then

Workbooks.Open Filename:= _
"C:\Documents and Settings\A092048\Desktop\Dialer.xls"
End If

Unload UserForm1
End Sub

My ListBox is set to 1 = fmMultiSelectMulti but when I select more than one
file, only the last file selected will open. Is there something else I need
to change for it to open more than one file at a time?
 
G

Guest

Sorry about that. I was thinking since my area of concern seemed to shift, I
should re-enter it under the new topic. I should have known you folks were
better than that and it wasn't necessary. Thanks for your help.
 
D

Dave Peterson

If that thought process comes over you ever again, you could go back and post a
followup saying to disregard your post.

(This doesn't happen very nice, but it's nice when it does.)

And if you're not sure which group to post, you could cross post to all (one
message to multiple newsgroups--not several messages to multiple newsgroups).
(But as you've seen, it's rarely necessary.
 
D

Dave Peterson

(This doesn't happen very nice, but it's nice when it does.)
should be:
(This doesn't happen very often, but it's nice when it does.)

(stupid fingers!)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top