Refreshing a listbox

  • Thread starter Thread starter ranswrt
  • Start date Start date
R

ranswrt

I have been stumped with a listbox added to a worksheet using the control
toolbox. I have been having problems refreshing the listbox when the data
range is changed. I have been using the following code to refresh it:

Sheets("name").OLEObjects("Listbox1").ListFillRange = Range("rng").address

I have been getting a blank listbox. I can manually enter the range in the
property window for the listfillrange, but when the range is changed the
listbox isn't updated. Is there a better way to update the listbox?
Thanks
 
See earlier posting the answer is

Sheets("Home").OLEObjects("ListBox1").ListFillRange = _
Mid(Names("wrkshtrng").Value, 2)


Using Range("rng").address doesn't include the sheet name. The only way of
getting the sheet name is using names, but names include an equal sign at the
beginning. the MID removes the equal sign.
 
I just noticed that the address that is being put into the listfillrange
property from the code that I am using is from the same sheet. The
datarange is on a different sheet that the listbox.

I tried:

Sheets("name").OLEObjects("Listbox1").ListFillRange =
sheets("data").Range("rng").address

I still get the same results
 
The sheet that contains the listbox is named 'Home'
The listbox name is 'Listbox1'
The sheet that contains the datarange for the listbox is named 'Current DB'
The name of the data range is 'wrkshtrng'

I noticed that when I ran the code you suggested in the earlier posts

Sheets("Home").OLEObjects("Listbox1").ListFillRange =
Range("wrkshtrng").address

The range for the ListFillRange changed to $D$6:$D$7 which is in the sheet
that contains the listbox. Not the sheet that contains the datarange.

So I tried

Sheets("Home").OLEObjects("ListBox1").ListFillRange = sheets("Current
DB").Range("wrkshtrng").Address

I got the same results. How do I get the address to be in the right
worksheet?
 
Does this test code get the correct worksheet?

Sub test()

With Sheets("current db")
Set xcell = .Range("B4")
num = 10
.Range(xcell.Offset.Offset(1, 0), _
xcell.Offset(num, 0)).Name = "wrkshtrng"
End With

a = Mid(Names("wrkshtrng").Value, 2)


End Sub
 
Yes it does

Joel said:
Does this test code get the correct worksheet?

Sub test()

With Sheets("current db")
Set xcell = .Range("B4")
num = 10
.Range(xcell.Offset.Offset(1, 0), _
xcell.Offset(num, 0)).Name = "wrkshtrng"
End With

a = Mid(Names("wrkshtrng").Value, 2)


End Sub
 
Not sure from your response if your problem is solved. The problem must be
that xcell isn't set to the correct worksheet in your code.
 
I changed
Sheets("Current DB") to worksheets("Current DB")
and added (external:=True)
That seemed to have fixed the problem.
Thanks for your help
 

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

Similar Threads

ListFillRange 4
listbox 5
ListFillRange 7
Listbox scretch 2
Linking an Active X Listbox to a worksheet list 2
Is this possible with a listbox? 1
How to set focus on an ActiveX ListBox 7
refresh listbox 2

Back
Top