Excel VBA:为什么组合框只显示列表中的一个项目?

时间:2017-07-18 08:45:26

标签: excel vba excel-vba combobox

我尝试通过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 个答案:

答案 0 :(得分:3)

RowSource无法使用水平列表,但您只需将范围指定给组合框的Column属性,如下所示:

UserForm2.ComboBox1.Column = Header.Value

答案 1 :(得分: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

答案 2 :(得分:0)

我创建了一个垂直列表并略微调整了代码。 我创建的表单有一个命令按钮和一个组合框。 单击按钮设置组合框的行源(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