2015-08-25 2 views
2

У меня есть поле со списком (называемое userBox) в листе под названием Home. Он имеет один из выбранных вариантов, допустим, "User A". Все, что я пытаюсь сделать, это назначить "User A" нанизывать usr, но я получаю ошибку компиляции:ActiveX ComboBox метод или элемент данных не найден

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 
.... 

EDIT: Я пытался фиктивную программу в новой книге, и она работала. С помощью comboBox 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», как вы делаете в первом примере. Если вы объявите свой рабочий лист как «Вариант» или «Объект», он должен работать. Или просто используйте 'OLEObjects()', как я показал выше, что является рекомендуемым способом доступа к элементам управления ActiveX. Тогда это будет работать независимо. – Bond

+0

Большое спасибо за объяснение, это действительно помогает, приветствует. – notout50