filling userform listbox

S

simonhall

Hi,

I would like to create a user form with two list boxes. The first list
box will always contain the same set of values from a worksheet,
therefore I can use a With statement in the UserForm_Initialize() sub
procedure. This is the easy part.

However, what I would really like to do is have the list displayed in
the second list box vary depending on the selection made in the first
list box.

Ie
ListBox1 contains "A, B, C, D" etc.
If the user selects "A", then ListBox2 will contain "1, 2, 3, 4".
However, if the user selects "B", then ListBox2 will actually contain
"X, Y, Z".

Is this possible?
Preferably, I would like the information in ListBox2 to appear as soon
as an item is selected in ListBox1.

Thanks, Simon
 
L

Leith Ross

Hello Simon,

Here is a method that uses 1 ListBox and a Label on a User Form.
don't think you need a second ListBox if it is only to display data.

When using Columns there are 2 properties that control how the data i
displayed: BoundColumn and TextColumn. BoundColumn controls whic
column is displayed in the ListBox. TextColumn controls which colum
data is returned from.

Set the TextColumn Property of ListBox1 = 2. There are actually
columns of data per line (Row). The user will see only the first colum
and the second will be hidden. When the user clicks on a line, th
Label's Caption will display the second column of the line selected i
ListBox1. Here is the code for the Controls and Events...


Code
-------------------
Private Sub ListBox1_Click()

Label1.Caption = ListBox1.Text

End Sub

Private Sub UserForm_Activate()

With ListBox1
.AddItem
.Column(0, 0) = "A"
.Column(1, 0) = "1,2,3,4"
.AddItem
.Column(0, 1) = "B"
.Column(1, 1) = "X,Y,Z"
End With

End Sub

-------------------


The .AddItem creates a new Row (Line) in the ListBox. The .Column(c, r
places the data in the appropriate Column for that Row. First Row an
Column start at zero.

Sincerely,
Leith Ros
 
S

simonhall

Hi Leith,

I can get something like that to work.
Such a simple idea, thanks for filling me in.

Simon
 

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