В раскрывающемся списке VBA Excel ComboBox пусто после obj.addItem - PullRequest
0 голосов
/ 08 марта 2012

У меня есть пользовательская форма VBA Excel2010 с одним полем со списком, из которого пользователь должен иметь возможность выбрать открытую в настоящее время книгу Excel. Подпрограмма USERFORM_Initialize содержит (среди прочего):

    cbWorkbook.Clear
    cbWorkbook.Visible = True
    For Each wb In Workbooks
        cbWorkbook.AddItem wb.name
    Next wb

Я установил точку останова для этого кода и могу пройти через нее; в текущей ситуации существует четыре открытых рабочих книги, и «для каждого» повторяется четыре раза, в зависимости от ситуации. И я вижу, что wb.name содержит значения, которые я хочу.

Однако, когда форма отображается и щелкает стрелка раскрывающегося списка, «список» становится пустым. Похоже, что есть место для одного элемента, и этот элемент пуст. (Я считаю, что это типично для пустого выпадающего списка.)

Выберите атрибуты для выпадающего списка: Autosize = False; AutoTab = ложь; Enabled = True; DropButtonStyle = 1-fmDropButtonStyleArrow; Высота = 18; ListRows = 8; ListStyle = 0; Locked = False; ShowOptionWhen = 2; SpecialEffect = 2; Стиль = 0; Visible = True. Во время выполнения cbWorkbook.listCount = 4

Это в разработке, и вчера оно работало, как и ожидалось, но сейчас, похоже, никогда не работает. Есть идеи, где я могу пойти не так?

РЕДАКТИРОВАТЬ: Я нашел решение этого: я случайно дублировал еще одно поле со списком поверх cbWorksheet, фактически скрывая его. Элемент управления, который я видел, был пуст, а элемент управления, который я хотел, был перекрыт. Удаление мошеннического блока управления решило проблемы.

Мои извинения; это должно было быть первым, что я искал.

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Я нашел решение этой проблемы: я случайно дублировал еще одно поле со списком поверх cbWorksheet, фактически скрывая его.Элемент управления, который я видел, был пуст, а элемент управления, который я хотел, был перекрыт.Удаление мошеннического блока управления решило проблемы.

Мои извинения;это должно было быть первым, что я искал.

0 голосов
/ 08 марта 2012
With ComboBox1
   .AddItem "This"
   .AddItem "Is"
   .AddItem "A"
   .AddItem "Test"
End With

или, если вы хотите заполнить его данными диапазона:

ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = "k1:k10"

PS - отправьте файл на проверку;на это должно быть проще смотреть!

...