我尝试通过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"
但是,组合框仅显示列表中的第一项。我调查了一天,仍然无法弄清楚我做错了什么。
答案 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