以下代码是更大程序的一部分,用于收集跟踪需要在SAP中发布的移动的一组生产订单。 这个特殊的例程很简单,它只是收集订单,将它们放在一个数组中并将列表放在一个组合框中。
我遇到的问题是,如果我使用数组作为方法,组合框按预期填充,没有任何错误,除了列表在那里,但不可见。如果单击该选项,则会正确显示,否则。
或者,如果我使用AddItem方法做同样的事情,事情是可见的。
我观察到与列表框相同的行为,其中的项目将填充,但如果我使用数组尝试它,但是看不见,但是使用addItem方法可见。我用两种方法测试了代码,重置Excel和我的电脑,并试图弄清楚它是否是我偶然点击的一些属性,但没有任何跳出来。
以下代码供参考
提前谢谢。
Private Sub POs_for_SAP()
'this routine is going to create the list of POs and populate the combo box with them
Dim lstcl As Variant, cell As Range, arr_po() As Variant, x As Integer
With ThisWorkbook.Sheets("Staging")
lstcl = .Range("B10000").End(xlUp).row
'UserForm12.cboPOSAP.Clear
For Each cell In .Range("B4:B" & lstcl)
If Not IsEmpty(cell) And IsEmpty(cell.Offset(0, 7)) Then
'UserForm12.cboPOSAP.AddItem cell
ReDim Preserve arr_po(x)
Set arr_po(x) = cell
x = x + 1
End If
Next
End With
With UserForm12.cboPOSAP
.Clear
.List = arr_po()
.Style = fmStyleDropDownList
End With
UserForm12.Show
End Sub
答案 0 :(得分:0)
在数组中不需要设置语句。
Private Sub POs_for_SAP()
'this routine is going to create the list of POs and populate the combo box with them
Dim lstcl As Variant, cell As Range, arr_po() As Variant, x As Integer
With ThisWorkbook.Sheets("Staging")
lstcl = .Range("B10000").End(xlUp).Row
'UserForm12.cboPOSAP.Clear
For Each cell In .Range("B4:B" & lstcl)
If Not IsEmpty(cell) And IsEmpty(cell.Offset(0, 7)) Then
'UserForm12.cboPOSAP.AddItem cell
ReDim Preserve arr_po(x)
arr_po(x) = cell '<~~~no need set
x = x + 1
End If
Next
End With
With UserForm12.cboPOSAP
.Clear
.List = arr_po()
.Style = fmStyleDropDownList
End With
UserForm12.Show
End Sub