【发布时间】:2018-05-14 05:49:54
【问题描述】:
我已经编写了填充 ComboBox 的代码,并将 BoundColumn 和 ColumnCount 的值设置为 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,这将通过“强制”您正确声明和引用您的变量/对象/属性等来帮助防止问题。跨度>