Bouton Combinaison / menu déroulant dans le bureau
-
29-09-2019 - |
Question
Comment puis-je ajouter un bouton de combinaison / déroulant dans le bureau (voir ci-dessous). De préférence avec le code.
Mise à jour:. Si elle aide tout, le code n'est pas nécessaire
La solution
vous pouvez le faire, sur la base des contrôles ActiveX suivants:
- Microsoft ImageList Control, version 6
- Microsoft ImageComboBox Control, version 6
manuellement, vous sélectionnez « Plus de contrôles ... » dans la barre de menu [Boîte à outils de configuration] et double cliquez sur les contrôles mentionnés pour les obtenir sur votre feuille. Placez la zone de liste déroulante où vous voulez qu'il soit, et ne pas tenir compte de la position du ImageList, il est visible uniquement en mode de conception. Maintenant, vous avez deux CONTROS embarqués nommé
- ImageList1
- ImageCombo1
L'insertion des deux composants crée également une référence à ... \ system32 \ MSCOMCTL32.OCX.
Ensuite, vous
- ajouter manuellement des icônes (GIF, BMP, etc.) à la liste des images
- définir manuellement la propriété ImageList du Combo "ImageList1"
- définir manuellement la propriété AutoLoad du Combo True
Maintenant que vous avez une combinaison 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 sa création en tant que
Set SH = ActiveSheet
Set OO = SH.OLEObjects
OO.Add "MSComctlLib.ImageComboCtl.2"
' .... etc ....
Le combo est créé, mais la flèche du menu déroulant n'apparaît pas, peu importe ce que je fais, allthough débogueur montre que tous les éléments de ListView sont soigneusement attachés. Beaucoup de collègues semblent avoir des problèmes avec cette ActiveX, il y a des charges de l'affichage sur le net.