【问题标题】:Excel VBA: Why does combo box shows only one item in the list?Excel VBA:为什么组合框只显示列表中的一项?
【发布时间】:2017-07-18 08:45:26
【问题描述】:

我尝试通过 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"

但是,组合框仅显示列表中的第一项。我查了一天,还是不知道我做错了什么。

【问题讨论】:

    标签: vba excel combobox


    【解决方案1】:

    RowSource 不适用于水平列表,但您可以简单地将范围分配给组合框的 Column 属性,如下所示:

    UserForm2.ComboBox1.Column = Header.Value
    

    【讨论】:

      【解决方案2】:

      小解决方法:

      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
      

      【讨论】:

        【解决方案3】:

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

        希望对你有帮助

        符号

        【讨论】:

        • 谢谢。但是,我的列表必须是水平的,因为它是给定的文档格式。横向列表能解决问题吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多