2017-07-18 166 views
0

我試圖通過VBA製作一個組合框,它將在工作表的某些單元格的下拉列表中顯示一些值。 這是相關代碼:Excel VBA:爲什麼組合框只顯示列表中的一個項目?

Set header = ActiveWorkbook.Worksheets(source_sheet_1_name).Range(Cells(4, 4), Cells(4, 9)) 
ActiveWorkbook.Names.Add Name:="header", RefersTo:=header 
UserForm2.ComboBox1.RowSource = "header" 

然而,組合框顯示在列表中唯一的第一個項目。我看了一天,仍然無法弄清楚我做錯了什麼。

回答

3

RowSource不會與水平列表的工作,但你完全可以指定範圍內的組合框的這樣的Column屬性:

UserForm2.ComboBox1.Column = Header.Value 
0

我創建了一個垂直列表並略微調整了代碼。 我創建的表單有一個commandbutton和一個組合框。 單擊該按鈕可設置組合框的行源(cbo1)。

Option Explicit 
Dim mylist As Range 

Private Sub CommandButton1_Click() 
Set mylist = ActiveWorkbook.Worksheets("lists").Range(Cells(4, 4), Cells(9, 4)) 
ActiveWorkbook.Names.Add Name:="header", RefersTo:=mylist 
Me.cbo1.RowSource = "header" 
End Sub 

希望這有助於

Sybolt

+0

謝謝。但是,我的列表必須是水平的,因爲它是給定的文檔格式。是否有可能通過水平列表來解決問題? – Aqqqq

1

解決方法不多:

Set header = ActiveWorkbook.Worksheets(source_sheet_1_name).Range(Cells(4, 4), Cells(4, 9)) 
For Each cell In header 
    UserForm2.ComboBox1.AddItem (cell.Value) 
Next cell 
相關問題