2017-07-18 167 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 
相关问题