2010-11-30 25 views

Répondre

1

vous pouvez le faire, sur la base des contrôles ActiveX suivants:

  • Microsoft ImageList Control, version 6
  • Microsoft ImageComboBox Control, version 6

manuellement, sélectionnez « Autres contrôles ... "dans la barre de menu [Control Toolbox] et double-cliquez sur les contrôles mentionnés pour les placer sur votre feuille. Positionnez le ComboBox où vous le souhaitez et ne tenez pas compte de la position de ImageList, il est visible uniquement en mode Création. Maintenant, vous avez deux CONTROS embarqués nommés

  • ImageList1
  • ImageCombo1

L'insertion des deux composants crée également une référence à ... \ system32 \ MSCOMCTL32.OCX.

Ensuite, vous

  1. ajouter manuellement des icônes (GIF, BMP, etc.) à la liste des images
  2. définir manuellement la propriété ImageList du Combo à "ImageList1"
  3. réglé manuellement la propriété AutoLoad du Combo True

Vous avez maintenant un Combo avec l'erreur mais pas d'icônes.

Ensuite, vous exécutez ce 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 

J'ai essayé dur pour créer les objets de VBA, mais le ImageCombo semble se comporter différent lors de la création comme

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

Le combo est créé, mais la flèche de la liste déroulante n'est pas affichée quoi que je fasse, bien que le débogueur montre que tous les éléments de ListView sont soigneusement attachés. Beaucoup de collègues semblent avoir des problèmes avec ce ActiveX, il y a beaucoup de publication sur le net.

Autres lectures here