Кнопка комбинации / выпадающий в офисе - PullRequest
2 голосов
/ 01 декабря 2010

Как добавить комбинированную кнопку / выпадающий список в офисе (см. Ниже).Желательно с кодом.

alt text

Обновление: Если это поможет, код не нужен.

1 Ответ

1 голос
/ 14 января 2011

Вы можете сделать это, основываясь на следующих элементах управления ActiveX:

  • Microsoft ImageList Control, версия 6
  • Microsoft ImageComboBox Control, версия 6

Вручную вы выбираете «More Controls ...» в строке меню [Control Toolbox] и дважды щелкаете по упомянутым элементам управления, чтобы получить их на листе.Расположите ComboBox там, где вы хотите, и не обращайте внимания на положение ImageList, оно видно только в режиме конструктора.К настоящему времени у вас есть два встроенных контроллера с именем

  • ImageList1
  • ImageCombo1

Вставка двух компонентов также создает ссылку на ... \ system32\ MSCOMCTL32.OCX.

Затем вы

  1. вручную добавляете значки (GIF, BMP и т. Д.) В список изображений
  2. , вручную устанавливая свойство ComL's ImageList на "ImageList1 "
  3. вручную установите для свойства автозагрузки Combo значение True

. Теперь у вас есть Combo с ошибкой, но без значков.

Затем вы выполняете этот код

Sub FillCombo()
Dim SH As Worksheet, OO As OLEObjects, Idx As Integer

    Set SH = ActiveSheet
    Set OO = SH.OLEObjects


    With OO("ImageCombo1").Object
        .ComboItems.Clear
        For Idx = 1 To OO("ImageList1").Object.ListImages.Count
            .ComboItems.Add , , , Idx
        Next Idx
    End With

End Sub

Я изо всех сил пытался создать объекты с помощью VBA, но ImageCombo, кажется, ведет себя по-разному при создании как

Set SH = ActiveSheet
Set OO = SH.OLEObjects
OO.Add "MSComctlLib.ImageComboCtl.2"
' .... etc ....

Комбинация создана, но стрелка раскрывающегося списка неотображается независимо от того, что я делаю, хотя отладчик показывает, что все элементы ListView аккуратно прикреплены.Многие коллеги, похоже, испытывают проблемы с этим ActiveX, есть множество сообщений в сети.

Дальнейшее чтение здесь

...