2016-08-30 47 views
0

如果這是一個愚蠢的問題,但我無法找到任何答案,只有101種方式來創建多列組合框,我很抱歉。多個範圍來填充單列組合框

我有3個命名範圍,我想合併成一個組合框的列表。

我不想簡單地將所有這些組合到範圍所在的一個列/範圍,因爲我有另一個用戶窗體,根據以前的用戶選擇,組合框會更改爲這三個範圍之一。

我簡單地(很明顯不是這樣)我想要一個長列表與每個這些命名範圍的數據。

,而我的其他組合框的用戶窗體上設置的東西,如初始化:

combobox1.list = Range("NamedRange1").Value 

我需要一種方法來讓我的名單= namedrange1 & namedrange2 & namedrange3

先感謝您的任何方向。

+0

嘗試在我的回答如下的代碼 –

回答

2

嘗試下面的代碼(您UserForm_ActivateUserForm_Initialize事件):

Private Sub UserForm_Activate() 

Dim UnionRange   As Range 
Dim cell    As Range 

' use Union to merge as many named ranges you need 
Set UnionRange = Union(Range("NamedRange1"), Range("NamedRange2"), Range("NamedRange3")) 

Me.ComboBox1.Clear 

For Each cell In UnionRange 
    ComboBox1.AddItem cell.Value 
Next cell 
ComboBox1.ListIndex = 0 

End Sub 
+0

非常感謝!刪除了我的問題,因爲我意識到爲了讓組合框在啓動時處於空白狀態而必須執行的操作將索引設置爲-1。 – Awill

+0

不客氣,如果幫助請標記爲答案 –

1

就我所知,它是不可能將命名範圍連接到.list或.rowsource屬性。 相反,你可以遍歷範圍和增加它的價值:

Dim rCell As Range 

For Each rCell In Worksheets("YourSheet").Range("namedrange1") 

    ComboBox1.AddItem rCell.Value 

Next rCell 

For Each rCell In Worksheets("YourSheet").Range("namedrange2") 

    ComboBox1.AddItem rCell.Value 

Next rCell 
....