Combobox will not fill

P

prahz

Hello:

I am a relative novice at VBA programming but here goes...

In Excel, I am trying to fill a combobox ("ComboBox1") in a user form
("inputBox") through a dynamic named range in the "MasterDataSheet"
worksheet of my workbook. The dynamic named range is named
"ClientList" and is referenced with the formula
=OFFSET(MasterDataSheet!$B$1,0,0,1,COUNTA(MasterDataSheet!$1:$1)-1)

The fact that the list I want to populate into the combobox is across
columns rather than rows is giving me some difficulty. Below is the
code for my user form. Can someone please help me with where I am gong
wrong?

Option Explicit

Private Sub UserForm_Initialize()
Dim cName As Range
Dim ws As Worksheet
Set ws = Worksheets("MasterDataSheet")

For Each cName In ws.Range("ClientList")
With Me.ComboBox1
.AddItem cName.Value
.List(1, .ListCount - 1) = cName.Offset(0, 1).Value
End With
Next cName
End Sub
 
J

Jon Peltier

Use

For Each cName In ws.Range("ClientList").Cells

instead of

For Each cName In ws.Range("ClientList")

What are you trying to do here:

.List(1, .ListCount - 1) = cName.Offset(0, 1).Value

What the code says is in the second row of the combo box (first parameter,
0=first row), in the Nth column, where N is the number of items already
added, add something. I think you have your row and column indices reversed.
To add something in the second column of the last row of the list, where you
just added something to the first row of this column, try this:

.List(.ListCount - 1, 1)

Likewise I think your row and column index in the .Offset are reversed,
because you're saying use the next cell to the right, which would be the
next cell in the defined range. I suspect you mean to use values from the
next row below the defined range:

cName.Offset(1, 0).Value

Altogether, now:

.List(.ListCount - 1, 1) = cName.Offset(1, 0).Value

- Jon
 

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