Комбинированная кнопка/выпадение в офисе
-
29-09-2019 - |
Вопрос
Как добавить кнопку комбинации/выпадение в офисе (см. Ниже). Предпочтительно с кодом.
Обновлять: Если это помогает, код не нужен.
Решение
Вы можете сделать это, на основе следующих элементов управления ActiveX:
- Microsoft Imagelist Control, версия 6
- Microsoft ImageCombobox Control, версия 6
Вручную вы выбираете «больше элементов управления ...» из строки меню [управления) и дважды щелкните упомянутые элементы управления, чтобы получить их на вашем листе. Поместите комбинированное, где вы хотите, и игнорируйте положение Imagelist, он виден только в режиме дизайна. К настоящему времени у вас есть два встроенных противоположных
- Imagelist1
- ImageCombo1
Вставка двух компонентов также создает ссылку на ... System32 mscomctl32.ocx.
Затем вы
- Вручную добавить значки (GIF, BMP и т. Д.) В список изображений
- Вручную установите свойство ImageList комбо на «Imagelist1»
- Вручную установите свойство 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, есть множество публикаций в сети.
дальнейшее чтение здесь