如何将组合框列表从 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
我想从 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