Кнопка комбинации / выпадающий в офисе

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

альтернативный текст

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

1 ответ

Решение

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

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

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

  • ImageList1
  • ImageCombo1

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

Затем вы

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

К настоящему времени у вас есть комбо с ошибкой, но без значков.

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

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, есть много сообщений в сети.

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

Другие вопросы по тегам