如何将Excel中的组合框列表预先插入用户窗体?

时间:2019-01-07 17:58:43

标签: excel vba userform

我想从excel中获取“名称列表”数据集,并将其用于Combobox用户表单。用户使用“组合框”中的下拉菜单来选择名称。

我的问题是我不知道如何将“名称列表”数据集应用于组合框。名称列表的范围在单元格C2:AU2中,在工作表“ DoNotPrint-Names”中。一旦用户选择了名称,我希望在单击“下一步”按钮时将其输出到“ DoNotPrint-Setup”工作表中的单元格中。


“名称”列表的屏幕截图部分: https://imgur.com/sqsUFmF


用户窗体的屏幕截图: https://imgur.com/UX8ytrY

我尝试了下面的代码,该代码要求Userform从“ DoNotPrint-Names”工作表中填充单元格,因为它是从单行开始首先对其进行转置的。不知道之后如何进行。

Private Sub UserForm_Initialize()

    ComboBox1.List = WorksheetFunction.Transpose(DoNotPrint - Names.Range("C2:AU2"))

End Sub

2 个答案:

答案 0 :(得分:3)

选择您的列表并为其命名,

示例

enter image description here

然后将该列表加载到您的ComboBox1

代码示例

Option Explicit
Private Sub UserForm_Activate()
    Dim vList As Variant

    For Each vList In [MyList]
        Me.ComboBox1.AddItem vList
    Next

End Sub

enter image description here

答案 1 :(得分:1)

找到的解决方案的附录

除了@ 0m3r的有效答案外,您还可以使用数组方法将整个命名的水平列表分配给组合框的.List属性在一个衬里:

Me.ComboBox1.List = Application.Transpose([myList]) 

修改

或者,您可以使用控件的.Column属性,该属性似乎并不为人所知:

Me.ComboBox1.Column = [myList].Value