如何将组合框列表从 Excel 预填充到用户窗体中?

How to prepolulate the combobox list from Excel into userform?

我想从 excel 中获取 "list of name" 数据集并将其用于组合框用户表单。用户使用组合框中的下拉菜单来 his/her 选择名称。

我的问题是我不知道如何将 "list of name" 数据集应用到组合框。姓名列表的范围位于单元格 C2:AU2 中,它位于名为 "DoNotPrint-Names" 的工作表中。用户选择名称后,我希望它在单击按钮 "Next" 时将其输出到 "DoNotPrint-Setup" 工作表中的单元格。


部分姓名列表截图: https://imgur.com/sqsUFmF


用户表单截图: https://imgur.com/UX8ytrY

我尝试了下面的代码,它要求用户窗体从 "DoNotPrint - Names" 工作表中预填充单元格,方法是先将其转置,因为它是一行。不确定之后如何进行。

Private Sub UserForm_Initialize()

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

End Sub

Select 您的列表并为其命名,

例子

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

代码示例

Option Explicit
Private Sub UserForm_Activate()
    Dim vList As Variant

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

End Sub

找到解决方案的附录

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

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

编辑

或者您可以使用控件的 .Column 属性,这似乎是相当未知的:

Me.ComboBox1.Column = [myList].Value