Program VBA create ComboBox have color in item with BSComboBox in BSAC Controls
In VBA, do with step by step:
Step 1: Create Userform
Make sure you have installed Add-in A-Tools or BSAC.ocx activex controls before do Step 2
Step 2: Click to userform, see window "Toolbox", right click on tab "Controls" -> "Import Page", select file "ImportToToolbox.pag" (Download)
(Do Step 2 only if you do not see BSAC controls on Toolbox window)
Step 3: In sheet, column A, rtatr row 1 you format interior 10 cells for any color. Rename sheet as "COLOR"
Step 5: Drag controls to userform: BSComboBox
Step 6: Right click on userform -> View Code. Now you have widow to edit code. Copy below code:
'-------BEGIN COPY
'Author: Nguyen Duy Tuan - http://bluesofts.net - http://atoolspro.com
Private Sub BSComboBox1_OnDrawItem(ByVal Index As Long, ByVal Left As Long, ByVal Top As Long, _
ByVal Right As Long, ByVal Bottom As Long, _
ByVal State As BSAC.TBSOwnerDrawState)
BSComboBox1.Canvas.Brush.Color = CLng(BSComboBox1.Items(Index).Key)
BSComboBox1.Canvas.FillRect Left, Top, Right - Left, Bottom ' - Top
BSComboBox1.Canvas.TextOut Left, Top, BSComboBox1.Items(Index).Text
End Sub
Private Sub BSComboBox1_OnSelect()
Range("e1:p25").Interior.Color = CLng(BSComboBox1.Selected.Key)
End Sub
Private Sub UserForm_Initialize()
Dim I&, sh As Worksheet
Set sh = Sheets("COLOR")
BSComboBox1.Style = csOwnerDrawVariable
BSComboBox1.ItemHeight = 30
For I = 1 To 10
BSComboBox1.Items.Add sh.Cells(I, 1).Value, , , sh.Cells(I, 1).Interior.Color
Next I
End Sub
'-------END COPY