Combination button/dropdown in office

Arlen Beiler picture Arlen Beiler · Nov 30, 2010 · Viewed 7.2k times · Source

How do I add a combination button/dropdown in office (see below). Preferably with code.

alt text

Update: If it helps any, code isn't needed.

Answer

MikeD picture MikeD · Jan 13, 2011

you can do it, based on the following ActiveX controls:

  • Microsoft ImageList Control, Version 6
  • Microsoft ImageComboBox Control, Version 6

Manually, you select "More Controls..." from the [Control Toolbox] menu bar and double click the mentioned controls to get them on your sheet. Position the ComboBox where you want it to be, and disregard the position of the ImageList, it is visible only in design mode. By now you have two embedded contros named

  • ImageList1
  • ImageCombo1

The insertion of the two components also creates a reference to ...\system32\MSCOMCTL32.OCX.

Then you

  1. manually add icons (GIF, BMP, etc) to the Image list
  2. manually set the Combo's ImageList property to "ImageList1"
  3. manually set the Combo's AutoLoad property to True

By now you have a Combo with the error but no icons.

Then you execute this code

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

I've tried hard to create the objects by VBA, but the ImageCombo seems to behave different when created as

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

The combo is created, but the dropdown arrow is not displayed no matter what I do, allthough debugger shows that all ListView elements are neatly attached. Lots of colleagues seem to have problems with that ActiveX, there's loads of posting on the net.

Further reading here