Комбинированная кнопка/выпадение в офисе

StackOverflow https://stackoverflow.com/questions/4318837

  •  29-09-2019
  •  | 
  •  

Вопрос

Как добавить кнопку комбинации/выпадение в офисе (см. Ниже). Предпочтительно с кодом.

alt text

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

Это было полезно?

Решение

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

  • Microsoft Imagelist Control, версия 6
  • Microsoft ImageCombobox Control, версия 6

Вручную вы выбираете «больше элементов управления ...» из строки меню [управления) и дважды щелкните упомянутые элементы управления, чтобы получить их на вашем листе. Поместите комбинированное, где вы хотите, и игнорируйте положение Imagelist, он виден только в режиме дизайна. К настоящему времени у вас есть два встроенных противоположных

  • Imagelist1
  • ImageCombo1

Вставка двух компонентов также создает ссылку на ... System32 mscomctl32.ocx.

Затем вы

  1. Вручную добавить значки (GIF, BMP и т. Д.) В список изображений
  2. Вручную установите свойство 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, есть множество публикаций в сети.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top