2014-12-24 116 views
1

我想通過adodb連接和記錄集來填充我的組合框,並使用訪問數據庫中的數據。代碼以前運行良好,但在一個正常的用戶窗體中,我的問題是我無法正確引用combobox.additem屬性。無法填充我的OLEObject組合框

當ActiveX對象直接在工作表「主窗口」上時,我如何引用它? 形狀的代號是:CombBox_Instruments 控制代碼的名稱應該是:Forms.ComboBox.1

我有市場,我得到的錯誤,目前錯誤是:運行時錯誤1004:應用程序定義或定義的對象錯誤

這裏是我的代碼

Private Sub Workbook_Open() 

    Dim DataConnection As ADODB.Connection: Set DataConnection = New ADODB.Connection 
    Dim RecordSet As ADODB.RecordSet: Set RecordSet = New ADODB.RecordSet 

    Dim SQLString As String 
    Const ConnectionPath As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\name\Desktop\Database.accdb;Persist Security Info=False;" 

    DataConnection.ConnectionString = ConnectionPath 
    DataConnection.Open 

    SQLString = "SELECT Name FROM MSysObjects WHERE Type =1 AND Flags=0" 

    With RecordSet 
    .ActiveConnection = DataConnection 
    .Source = SQLString 
    .LockType = adLockReadOnly 
    .CursorType = adOpenForwardOnly 
    .Open 
    End With 

Do Until RecordSet.EOF = True 
    If RecordSet.Fields(0) <> "Instruments" Then 
     Debug.Print RecordSet.Fields(0) 
     Sheets("Mainwindow").OLEObjects("Forms.ComboBox.1").AddItem RecordSet.Fields(0) - ISSUE IS HERE! 
     RecordSet.MoveNext 
    Else 
     RecordSet.MoveNext 
    End If 
    Loop 

End Sub 

回答

1

假設組合框命名CombBox_Instruments是在紙張上「主窗口」你的代碼應該是:

Sheets("Mainwindow").CombBox_Instruments.AddItem RecordSet.Fields(0) 
+0

哇謝謝你!奇怪的是,我試過,但與.value,它無法找到屬性。儘管如此,當我在另一個事件處理程序的if語句中使用它時,.value屬性顯然適用於combbox_instruments。你知道這是爲什麼嗎? – uncool

+0

您可以舉一個例子說明你在哪裏試圖使用'.Value'?如果此語法適合您,請將答案標記爲已接受。 – Chrismas007

+0

例如這裏:如果CombBox_Instruments.Value <> 「」 而DTPicker_FROM.Value uncool