2015-08-25 44 views
2

我在名爲Home的工作表中有一個組合框(稱爲userBox)。它有一個選項,比如"User A"。所有我想要做的就是分配"User A"usr,但我不斷收到編譯錯誤:未找到ActiveX組合框方法或數據成員

Method or data member not found

Sub fixPls() 
Dim row As Integer, col As Integer, usr As String, tbl As String, found As Boolean, k As Integer, payType As String 
Set wb = ThisWorkbook 
Set ws = wb.Sheets("Home") 
ws.Activate 

Application.DisplayAlerts = False 
Application.ScreenUpdating = False 

lastRow = Range("B16").End(xlUp).row 
usr = ws.userBox.Value 
tbl = ws.tblBox.Value 
payType = ws.tpBox.Value 
.... 

編輯:我在一個新的工作簿嘗試虛擬程序,和它的工作。使用一個activeX組合框,爲什麼它不同?

Sub blah() 
Dim rly As String 
rly = Sheets(1).ComboBox1.Value 
ThisWorkbook.Sheets(1).Cells(1, 10) = rly 
End Sub 

單元格J1返回在comboBox中選擇的值。

回答

1

如果它是一個ActiveX控件,您需要使用OLEObjects收集訪問它:

Debug.Print ws.OLEObjects("userBox").Object.Text 
+0

從那時起,對不起,我已經編輯了帖子。我的虛擬程序在使用ActiveX組合框並使用工作表範圍內的.combobox.value提取值時起作用。 – notout50

+0

你不能像你在第一個例子中那樣使用'Worksheet'對象來訪問'OLEObject'。如果您將工作表聲明爲「Variant」或「Object」,它應該可以工作。或者,如上所示,只需使用'OLEObjects()',這是訪問ActiveX控件的推薦方式。那麼它將工作不管。 – Bond

+0

非常感謝你解釋,這真的有幫助,歡呼。 – notout50

相關問題