2014-06-10 205 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