如何按顺序从数组中填充组合框列表

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)