Populate list box with multi-dimensional array

G

Graham Whitehead

Hi, I was just wondering if it possible to populate a list box with an array
that was say 8 x 8. Basically, I organised a whole bunch of data and would
like to present it to a user inside a listbox on a form.
 
N

NickHK

Graham,
Does this work for you:

Private Sub CommandButton1_Click()
Dim arr(1 To 8, 1 To 8) As String
Dim i As Long
Dim j As Long

'Fill array, but can come from a Range or wherever
For i = 1 To 8
For j = 1 To 8
arr(i, j) = "Item " & i & ", " & j
Next
Next

With ListBox1
.Clear
.ColumnCount = UBound(arr, 2)
.List = arr()
End With

End Sub

NickHK

End Sub
 
G

Graham Whitehead

Thanks for the help Nick. I see how this works except for the line:

.ColumnCount = UBound(arr, 2)

Where does the 2 come from and what does it do?
 
G

Graham Whitehead

I managed to get your example working, and it is nearly what I am looking
for. However, only want one item from the array in each column. For
example, say the array contained an 8 x 8 boolean evaluation of values - I
would want only the result for the value in that column, i.e. [1,1] would
just say False - becasue the arr(1,1) value is false. Hope this makes
sense.

BTW Am I right in thinking that the 2 refers to the number of items
contained withing the array? (still a bit fuzzy on this one).

Thanks
 
N

NickHK

Graham,
Read the help about L/UBound.
As you can have multi-dimensional arrays, you need to specify which
dimension you want info on.
In this case it is the 2nd dimension, so the number of columns in the
ListBox match the number of horizontal elements in the array.
Otherwise it defaults to 1.
Actually, it would be better as :
..ColumnCount = UBound(arr, 2)-LBound(arr, 2)+1
to handle 0, 1 or whatever based array.

NickHK
 
N

NickHK

Graham,
Unless I'm missing something, that's what you have there;
8 columns x 8 rows with the array value displayed in the corresponding
position in the ListBox.

NickHK

Graham Whitehead said:
I managed to get your example working, and it is nearly what I am looking
for. However, only want one item from the array in each column. For
example, say the array contained an 8 x 8 boolean evaluation of values - I
would want only the result for the value in that column, i.e. [1,1] would
just say False - becasue the arr(1,1) value is false. Hope this makes
sense.

BTW Am I right in thinking that the 2 refers to the number of items
contained withing the array? (still a bit fuzzy on this one).

Thanks

Graham Whitehead said:
Thanks for the help Nick. I see how this works except for the line:

.ColumnCount = UBound(arr, 2)

Where does the 2 come from and what does it do?
 

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