【问题标题】:How to display multicolumn combobox in Excel VBA?如何在 Excel VBA 中显示多列组合框?
【发布时间】:2018-05-14 05:49:54
【问题描述】:

我已经编写了填充 ComboBox 的代码,并将 BoundColumnColumnCount 的值设置为 2。

我的要求是在 ComboBox 中显示材质 ID 和材质描述以使其用户友好。

但是当我运行用户窗体时,它只显示第二列(即材料名称)。我还想在两个变量中分别捕获选择和两个值以进行进一步处理。

我在我的用户窗体的 initialize 事件中调用这个宏。

Sub inittCode()

    Dim tcodelist() As String
    Dim tnamelist() As String

    'Activates master data sheet
    Worksheets("MD").Activate
    mylr = Cells(Rows.Count, 1).End(xlUp).Row

    'Calculate range size to initialize array
    Size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

    ReDim tcodelist(Size)
    ReDim tnamelist(Size)

    'fill the first array
    For X = 2 To mylr
        tcodelist(X - 1) = Cells(X, 1)
    Next X

    'Adjust Array size to remove null values
    For a = 0 To mylr - 1
        tcodelist(a) = tcodelist(a + 1)
    Next a
    ReDim Preserve tcodelist(Size - 2)

    'Fill second array
    For x1 = 2 To mylr
        tnamelist(x1 - 1) = Cells(x1, 2)
    Next x1

    'Remove null values and adjust size
    For b = 0 To mylr - 1
        tnamelist(b) = tnamelist(b + 1)
    Next b
    ReDim Preserve tnamelist(Size - 2)

    'Fill combobox with array values
    MD_initform.matselcb.ColumnCount = 1
    MD_initform.matselcb.List = tcodelist
    MD_initform.matselcb.ColumnCount = 2
    MD_initform.matselcb.List = tnamelist

End Sub

【问题讨论】:

  • 声明所有变量是个好主意。我建议您在 [每个] 模块 [总是] 的顶部添加行 Option Explicit,这将通过“强制”您正确声明和引用您的变量/对象/属性等来帮助防止问题。跨度>

标签: excel vba combobox


【解决方案1】:

当您想要显示多列时您需要将项目列表作为二维数组传递。第一个索引用于行,第二个用于列。

在不了解代码细节的情况下,做类似的事情

Dim tlist() As String
ReDim tlist(Size, 2)  ' Declare 2-dimensional array for "Size" rows and 2 cols
...
tlist(X - 1, 1) = Cells(X, 1)    ' Codes
...
tlist(x1 - 1, 2) = Cells(x1, 2)  ' Names

' Fill combobox with array values
MD_initform.matselcb.ColumnCount = 2
MD_initform.matselcb.List = tlist

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2015-12-23
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    相关资源
    最近更新 更多