Вы можете сделать это, основываясь на следующих элементах управления ActiveX:
- Microsoft ImageList Control, версия 6
- Microsoft ImageComboBox Control, версия 6
Вручную вы выбираете «More Controls ...» в строке меню [Control Toolbox] и дважды щелкаете по упомянутым элементам управления, чтобы получить их на листе.Расположите ComboBox там, где вы хотите, и не обращайте внимания на положение ImageList, оно видно только в режиме конструктора.К настоящему времени у вас есть два встроенных контроллера с именем
Вставка двух компонентов также создает ссылку на ... \ system32\ MSCOMCTL32.OCX.
Затем вы
- вручную добавляете значки (GIF, BMP и т. Д.) В список изображений
- , вручную устанавливая свойство ComL's ImageList на "ImageList1 "
- вручную установите для свойства автозагрузки 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, есть множество сообщений в сети.
Дальнейшее чтение здесь