简体   繁体   中英

excel vba listbox additem

I am running office 365 home on windows 10. I am programming Excel using VBA. I have a data range in a worksheet row. I want the user to be able to select one item from this row of data. I am trying to populate ListBox or ComboBox with dta from the range row. Having read MS vba.reference documentation I decided to get my range data into an array and use listbox = myarray() and got "Object does not support this method or property." I tried looping through my data range and putting each item in using listbox.additem (mydata()) with the same result. On examination of the listbox prperties AddItem is not there. Seems they have been withdrawn or maybe never existed for Excel VBA. Any suggestions?

If you are using Additem then you should only add a single item not an array. If you want to use an array you have to use List and the array should be one-dimensional

MyListBox.List=MyOneDArray

Personally I never use .List and an array with Listboxes because I found some circumstances in which it did not work as expected.

There are two ways you can do this:

  1. loop through each item individually and use combobox.additem
  2. Set the combobox.list = array (or variant)

See below for an example of both assuming you want to populate the data from cells A1 to A10 in 2 separate comboboxes:

Private Sub UserForm_Initialize()

Dim i As Integer
Dim arr As Variant
    
' looping through parameters 1-by-1
With UserForm1.ComboBox1
    For i = 1 To 10
        .AddItem ThisWorkbook.Sheets("Sheet1").Range("A" & i).Value
    Next i
End With

' setting combobox list to arrauy
With UserForm1.ComboBox2
    .List = ThisWorkbook.Sheets("Sheet1").Range("A1:A10").Value
End With

End Sub

Make sure to insert your code in the userform code and not the module code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM