2015-04-20 1 views
1

У меня есть пользовательская форма с большим количеством списков. Я пытаюсь использовать .AddItem, когда пользовательская форма инициализирована, без успеха.Использование .AddItem с различными Comboboxes в Excel VBA Userform

Вот что я пытался до сих пор:

Sub Userform_Initialize() 
    Dim cCont As MSForms.ComboBox 

    For Each cCont In Me.Controls 
    cCont.AddItem "Item Added" 
    Next cCont 
End Sub 

Я обычно получаю сообщение об ошибке выполнения 13 «несоответствие типов» придумать. Не уверен, что это имеет какое-либо отношение к кнопке, которая у меня есть и в пользовательской форме.

Как пропустить форму пользователя и использовать .AddItem для каждой выписки? Как только я получу код о том, как это сделать, я оберну его в оператор If, чтобы добавить его только в определенные comboboxes с определенными словами в имени, если это помогает контексту.

Спасибо заранее,

-Anthony

ответ

1

Энтони,

Вы пытаетесь вызвать метод AddItem на каждого элемента управления на форме. Но не все элементы управления предоставляют метод AddItem. Вам нужно проверить, является ли конкретный элемент управления combobox или нет. И только если элемент управления является combobox, вы можете вызвать метод AddItem.

Как прокрутить пользовательскую форму и использовать .AddItem для каждой выкладки?

Непонятно, где вам нужно пройти. Не могли бы Вы уточнить?

+0

«Но не все элементы управления обеспечивают метод AddItem» - это то, что заставило меня взглянуть на инструкцию if, чтобы проверить тип элемента управления. Как только я завернул cCont.AddItem «текст» в оператор if, он работал нормально. Благодаря! – aCarella

0

Вы код отлично для меня, добавив два поля со списком в UserForm работает. Единственное, о чем я могу думать, это правильные ссылки, по какой-то причине не включены.

1

Лучший способ добавить элементы управления в пользовательскую форму, которую я нашел, - следовать этой процедуре.

Dim NewComboBox as Control 
Set NewComboBox = Me.Controls.Add("Forms.ComboBox.1") 
    With NewComboBox 
     'Inside of this part you can put .name or any other property in the 
     'activex controls properties part, .left .top .width and .height determine the size of the box 
     .Name = Whatever Name You Desire 
    End With 

Положите это на свое событие userform_initialize(), и вам должно быть хорошо идти.