如何按顺序从数组中填充组合框列表
How do I populate combobox lists from arrays in sequence
我有一个用户表单,其中包含多个带列表的组合框。这些列表将从工作表上的几个动态数组中获取。我知道如何用数组填充一个组合框,但我想用数组中各自的信息填充每个组合框。我有加载一个的代码,但我在想,如果我要为每个代码重新编写代码,那么代码将非常缓慢和乏味。你能告诉我如何更有效地做到这一点吗?
The code to fill the Device Brand/Model combobox is as follows:
Private Sub UserForm_Initialize()
Dim machbrandmod As Range
Dim ws As Worksheet
Set ws = Worksheets("Arrays")
For Each machbrandmod In ws.Range("mach_type")
Me.nd_mod_cb.AddItem machbrandmod.Value
Next machbrandmod
End Sub
我是否必须退出 sub,定义下一个 Dim,然后重写下一个组合框的代码?还是有更有效的方法?
感谢大家的帮助。
你可以这样做:
Private Sub UserForm_Initialize()
FillList "mach_type", Me.nd_mod_cb
FillList "other_list", Me.other_cb
'etc
End Sub
Sub FillList(rangeName as String, lst As Object)
Dim c As Range
For Each c In Worksheets("Arrays").Range(rangeName).Cells
lst.AddItem c.Value
Next c
End Sub
假设你的范围看起来像你的图片,意味着同一列的一些行(类似于 "A2:A6"),下一个简单的解决方案是:
Dim arr As Variant
arr = ws.Range("mach_type").value: Me.nd_mod_cb.list = arr
如果您的范围只有一行和更多列(类似于 "A1:E1"),您可以使用:
arr = ws.Range("mach_type").value: Me.nd_mod_cb.list = WorksheetFunction.Transpose(arr)
我有一个用户表单,其中包含多个带列表的组合框。这些列表将从工作表上的几个动态数组中获取。我知道如何用数组填充一个组合框,但我想用数组中各自的信息填充每个组合框。我有加载一个的代码,但我在想,如果我要为每个代码重新编写代码,那么代码将非常缓慢和乏味。你能告诉我如何更有效地做到这一点吗?
The code to fill the Device Brand/Model combobox is as follows:
Private Sub UserForm_Initialize()
Dim machbrandmod As Range
Dim ws As Worksheet
Set ws = Worksheets("Arrays")
For Each machbrandmod In ws.Range("mach_type")
Me.nd_mod_cb.AddItem machbrandmod.Value
Next machbrandmod
End Sub
我是否必须退出 sub,定义下一个 Dim,然后重写下一个组合框的代码?还是有更有效的方法?
感谢大家的帮助。
你可以这样做:
Private Sub UserForm_Initialize()
FillList "mach_type", Me.nd_mod_cb
FillList "other_list", Me.other_cb
'etc
End Sub
Sub FillList(rangeName as String, lst As Object)
Dim c As Range
For Each c In Worksheets("Arrays").Range(rangeName).Cells
lst.AddItem c.Value
Next c
End Sub
假设你的范围看起来像你的图片,意味着同一列的一些行(类似于 "A2:A6"),下一个简单的解决方案是:
Dim arr As Variant
arr = ws.Range("mach_type").value: Me.nd_mod_cb.list = arr
如果您的范围只有一行和更多列(类似于 "A1:E1"),您可以使用:
arr = ws.Range("mach_type").value: Me.nd_mod_cb.list = WorksheetFunction.Transpose(arr)