В Excel 2010 я пытаюсь создать пользовательскую форму динамически в моем VBA-коде. Однако после запуска кода список не отображается при открытии раскрывающегося списка. Если я поставлю точку останова перед «.show», я могу проверить форму в окне дизайна, и я вижу, что этот список заполнен. Способет ли метод .show удалить список или что происходит? Решения, которые я нашел, сосредоточены на заполнении диапазона ячеек или размещении «.additem» в коде инициализации пользовательской формы. Я не хочу делать ничего, что требует от меня создания второго файла. Все должно быть в этом коде vba, если это возможно. Любая помощь оценивается. Далее следует мой код.Создание и заполнение combobox из модуля vba
Sub make_combobox_form()
' Makes a form with only a simple combobox
Dim myForm As Object
Dim cb As MSForms.ComboBox
'Create the User Form
Set myForm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With myForm
.Properties("Width") = 400
.Properties("Height") = 300
End With
Set cb = myForm.Designer.Controls.Add("Forms.ComboBox.1")
With cb
.Top = 100
.Left = 100
.Height = 20
.Width = 200
.AddItem "Item_1"
.AddItem "Item_2"
.AddItem "Item_3"
.value = "Item_1"
End With
VBA.UserForms.Add(myForm.name).Show
ThisWorkbook.VBProject.VBComponents.Remove myForm
End Sub
Пытались ли вы, заселение после шоу? –
Вы заполняете список по умолчанию при инициализации формы? – Linga
вы можете поместить код .show в верхнюю часть юнита, и перед этим просто добавьте ActiveDocument.ScreenUpdate = False и в конце суб-ActiveDocument.ScreenUpdate = True – Kathara