2013-10-01 183 views
0

我無法用範圍中的選項填充組合框。用VBA中的值填充組合框

用戶選擇帶refedit的範圍,然後必須使用所選單元格的值填充ComboBox。如果用戶更改ref,則必須刪除舊數據並使用新數據重新填充。

下面是我目前的代碼。編譯正確,但不起作用。

我沒有附加到ComboBox本身,但我需要用列中的值填充列表,以便用戶可以選擇他們想要用作「鍵」的列表第一組是樣本什麼是連續的。我希望這些選項作爲下拉選項提供。

您可以在http://ge.tt/2dbV5Yt/v/0?c

Store # Address City ST Zip Market Radius
Private Sub rngHeader_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    Dim selRng As Range 
    Set selRng = Range(rngHeader.Value) 

    '//Erase any items that are in there 
    For I = 1 To cmbKeyCol.ListCount 
     cmbKeyCol.RemoveItem 0 'Remove the top item each time 
    Next I 


    'Below here is the part that I'm having trouble with. This is one of my attempts, but 
     'I've changed this thing probably 20 times since asking the question 
    '//Build new list of items from the header row. 
    For Each cell In selRng.Cells 
     cmbKeyCol.AddItem cell.Value 
    Next 
End Sub 

回答

0

下載什麼我工作的一個副本你爲什麼不利用這個來代替:

cmbkeyCol.RowSource = selRng.Address 'Assuming you already got your range right. 

這將所有的物品指定的範圍而不是通過它們迭代1除以1.

編輯1:

Dim list as variant 

list = selRng.Value 
list = Application.Transpose(list) 

cmbkeyCol.List = list 

希望這項工作。

編輯2:

Dim list as variant 

list = rngHeader.value 
list = Application.Transpose(list) 

cmbkeyCol.List = list 

我假定selRng處於編輯1的源極範圍以及實際上它是rngHeader。 希望這現在可以工作。

+0

似乎沒有做任何事情。當我嘗試此操作時,不會將任何項目填充到我的列表中。 – PsychoData

+0

哦,我的壞。沒有看到您的來源列表在列上。
我修改了腳本,以便可以從列中獲取列表。 – L42

+0

那麼,我也嘗試使用多行而不是列的選擇,只是爲了看看我能看到什麼,我不能讓它加載任何。將selRng.address更改爲Range(selRng)使我獲得了第一個列出的列,但沒有其他列或行列。 – PsychoData