У меня есть следующий код в UserForm. Я пытаюсь добавить определенное подмножество comboboxes в форме в коллекцию, а затем пропустить эту коллекцию. Кажется, что добавление значения combobox к коллекции, а не сам объект управления ...? Какой идентификатор или свойство необходимо использовать, чтобы иметь возможность доступа к свойству .Text
объекта combobox после его добавления в коллекцию?Как добавить объекты управления в пользовательскую форму в коллекцию, а затем прокрутить коллекцию и получить доступ к их свойствам?
'Put comboboxes in a collection
Dim oColl As Collection
Set oColl = New Collection
Dim cb As Control
For Each cb In Me.Controls
If TypeName(cb) = "ComboBox" Then
' I suspect it may be this line going wrong:
If IsNumeric(cb.Text) Then oColl.Add (cb)
End If
Next
' Trying to loop through the collection of comboboxes
' I've tried to declare ctrl as MSForms.ComboBox, ComboBox, Control, Object,
' and Variant, results are the same...
Dim ctrl As MSForms.ComboBox
Dim i As Integer
For i = 1 To oColl.count
For Each ctrl In oColl
' This line produces an object required error on ctrl
If CInt(ctrl.Text) = line Then
Большое спасибо! Знал, что это было, наверное, что-то простое. Почему скобки заставляют его добавлять значение combobox, а не самого объекта? – FredGooch
@ JWarren, на который подробно ответили здесь ... http://stackoverflow.com/questions/5413765/what-are-the-rules-government-usage-of-brackets-in-vba-function-calls –
Спасибо, что очистили много. У меня были странные проблемы с этим раньше, и я никогда не потрудился изучить настоящие правила. – FredGooch