Pulsante Combinazione / discesa in ufficio
-
29-09-2019 - |
Domanda
Come faccio ad aggiungere un pulsante combinazione / discesa in carica (vedi sotto). Preferibilmente con il codice.
Aggiornamento:. Se aiuta qualsiasi, non è necessario il codice
Soluzione
si può fare, in base ai seguenti controlli ActiveX:
- Microsoft ImageList controllo, versione 6
- Microsoft ImageComboBox controllo, versione 6
Manualmente, si seleziona "Altri controlli ..." dal [Strumenti di controllo] barra dei menu e fare doppio clic dei controlli di cui per farli sul foglio. Posizionare la casella combinata in cui si desidera che sia, e ignorare la posizione del ImageList, è visibile solo in modalità di progettazione. Ormai avete due Contros incorporati denominato
- ImageList1
- ImageCombo1
L'inserimento delle due componenti crea anche un riferimento a ... \ system32 \ MSCOMCTL32.OCX.
Poi
- aggiungere manualmente icone (GIF, BMP, ecc) per la lista Immagine
- impostare manualmente proprietà ImageList del Combo a "ImageList1"
- impostare manualmente proprietà del caricamento automatico del Combo True
A questo punto si dispone di un Combo con l'errore, ma non le icone.
Poi si esegue questo codice
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
Ho cercato di creare gli oggetti di VBA, ma l'ImageCombo sembra comportarsi diverso quando creata come
Set SH = ActiveSheet
Set OO = SH.OLEObjects
OO.Add "MSComctlLib.ImageComboCtl.2"
' .... etc ....
Viene creato il combo, ma il menù a tendina non viene visualizzato, non importa quello che faccio, allthough spettacoli debugger che tutti gli elementi ListView sono ben collegati. Un sacco di colleghi sembrano avere problemi con quella ActiveX, c'è un sacco di invio in rete.