2010-11-30 23 views

回答

1

你可以做到這一點,基於以下ActiveX控件:

  • 微軟ImageList控制,第6版
  • 微軟ImageComboBox控制,第6版

手動調整,則選擇「其他控件...「從[Control Toolbox]菜單欄雙擊,然後雙擊所提到的控件,將它們放在工作表上。將ComboBox放置在您想要的位置,並忽略ImageList的位置,它僅在設計模式下可見。現在你有兩個嵌入式CONTROS命名

  • ImageList1
  • ImageCombo1

兩個組件的插入還創建了一個參考... \ SYSTEM32 \ MSCOMCTL32.OCX。

然後你

  1. 手動添加圖標(GIF,BMP等),以圖片列表
  2. 的組合的ImageList屬性手動設置爲 「ImageList1」
  3. 手動組合的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 .... 

創建的組合產生的行爲不同,但是不管我做什麼都不顯示下拉箭頭,allthough調試器顯示所有ListView元素都整齊地連接在一起。許多同事似乎對該ActiveX有問題,網上有大量的帖子。

進一步閱讀here