2014-06-10 155 views
1

我在Excel VBA中有一个组合框,它只显示一条记录,但它应该显示7.我放弃了代码,我可以看到程序如何通过代码分配所有条目列表,但只显示一个。组合框只显示一条记录

有人能告诉我我错过了什么。

SqlSelect = "SELECT distinct [country] FROM [Data]" 'there are 7 records returned in this query 

Set AdoRst = New ADODB.Recordset 
AdoRst.Open SqlSelect, WfmDbCn, adOpenForwardOnly, adLockReadOnly, adCmdText 


With Me.cmbCountry 
    .ColumnCount = 1 
    .ColumnWidths = "0;0;150" 
    .BoundColumn = 1 

    Do Until .ListCount = 0 
     .RemoveItem (0) 
    Loop 
    i = 0 
    Do While Not AdoRst.EOF 
     .AddItem AdoRst.Fields(0).Value 
     .List(i, 1) = AdoRst.Fields(0) 
     i = i + 1 
     AdoRst.MoveNext 
    Loop 

    If .ListCount > 0 Then 
     .ListIndex = 0 
    Else 
     .Value = Null 
    End If 
End With 

感谢

回答

2

的问题是:

.ColumnCount = 1 
.ColumnWidths = "0;0;150" 

您声明只有一列,然后设置的3宽度如果你适应这样的:

.ColumnCount = 2 
.ColumnWidths = "150;0" 

它应该工作。 Boundcolumn在这里并不真正需要。 .AddItem为第1列添加一个值; .List(i, 1)为第2列增加了一个值。

+0

谢谢Jzz。神奇!我无法弄清楚问题所在。你从疯狂中拯救了我!再次感谢 – Selrac

+0

哈哈!去过也做过。买了'我疯了'_t恤。很高兴帮助。 – Jzz