我正在尝试从工作表上的数据填充用户窗体上的多列组合框。
对于一系列行,如果第一列为空且第三列不为空,我想将第三列值和行号存储到组合框中。我试过的代码不断抛出错误:
运行时错误'':无法设置Column属性。无效的属性数组索引
For x = 5 To i
If ws.Cells(x, 1) = "" And ws.Cells(x, 3) <> "" Then
With ComboBox
.Column(0, .ListCount) = ws.Cells(x, 3)
.Column(1, .ListCount) = x
End With
End If
Next x
组合框的属性中列数设置为2。 提前谢谢。
答案 0 :(得分:0)
你应该使用
.Column(0, .ListCount - 1) = ws.Cells(x, 3)
.Column(1, .ListCount - 1) = x
解决最后一个条目。这是因为.ListCount
返回自然条目数(0表示空,1表示1条目等),而.Column()
表现得像基于0的数组,因此第1个条目位于.Column(0,...)
。
修改强>
您可以使用.AddItem
向组合框添加1行,然后逐个填充这些值:
ComboBox.AddItem
With ComboBox
.Column(0, .ListCount - 1) = ws.Cells(x, 3)
.Column(1, .ListCount - 1) = x
End With
或者,您可以使用值填充数组并将其加载到组合框中,如下所示:
Dim cBuf(2, 0 to 2)
cBuf(0, 0) = "John"
cBuf(0, 1) = 1982
...
ComboBox = cBuf
在此处阅读更多enter link description here
答案 1 :(得分:0)
非常感谢AcsErno。我的问题的解决方案是为ComboBox创建一个新条目(.AddItem),然后为新条目的每一列分配值。我的代码现在如下所示,并按我的意愿工作。
For x = 5 To i
If ws.Cells(x, 1) = "" And ws.Cells(x, 3) <> "" Then
With ComboBox
.AddItem
.Column(0, .ListCount - 1) = ws.Cells(x, 3)
.Column(1, .ListCount - 1) = x
End With
End If
Next x