ComboBox have image in item and ListBox have image item - 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: Drag controls to userform: BSComboBox, BSListNox, BSButton, BSImageList
Step 4: 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
#If VBA7 Then
Private Declare PtrSafe Function DestroyIcon Lib "User32.dll" (ByVal HIcon As LongPtr) As Long
#Else
Private Declare Function DestroyIcon Lib "User32.dll" (ByVal HIcon As Long) As Long
#End If
'VBA programming with BSAC - Bluesofts ActiveX Controls
Private Sub UserForm_Initialize()
#If VBA7 And Win64 Then
Dim hIcon() As LongPtr, hSmIcon() As LongPtr
#Else
Dim hIcon() As Long, hSmIcon() As Long
#End If
Dim I&, n As Long, idx&
'Setup ImageList for display icon in Combobox
BSImageList1.ListImages.Clear
BSImageList1.PicHeight = 32
BSImageList1.PicWidth = 32
BSImageList1.UseImageListDraw = True 'BSAC v2.0.0.6 - 05-04-2019
'Link BSImageList to BSComboBox
Set BSComboBox1.ImageList = BSImageList1
'Setup BSCombobox display image in item
BSComboBox1.Style = csExpertAutoBuild
BSComboBox1.ItemHeight = 32
'Link BSImageList to BSListBox
Set BSListBox1.ImageList = BSImageList1
'Setup BSListBox display image in item
BSListBox1.Style = dsExpertAutoBuild
BSListBox1.ItemHeight = 32
n = ExtractIconEx(GetSysDir & "\shell32.dll", -1, 0&, 0&, 0&) 'Count number of icons in "shell32.dll"
ReDim hIcon(n - 1), hSmIcon(n - 1) 'Resize array to keep HICON
n = ExtractIconEx(GetSysDir & "\shell32.dll", 0, hIcon(0), hSmIcon(0), n) 'Copy n icon from "shell32.dll" to array
BSComboBox1.Clear
For I = 0 To n - 1
idx = BSImageList1.ListImages.AddIcon(hIcon(I)) 'Add icon to BSImageList
BSComboBox1.Items.Add "Icon index: " & I, idx 'Add item and link icon to ComboBox
BSListBox1.Items.Add "Icon index: " & I, idx 'Add item and link icon to ListBox
DestroyIcon hIcon(I) 'Free memory
DestroyIcon hSmIcon(I) 'Free memory
Next I
End Sub
Private Sub UserForm_Terminate()
BSImageList1.ListImages.Clear
End Sub
Private Sub BSComboBox1_OnSelect()
Label2.Caption = BSComboBox1.Selected.Text
Label2.Enabled = True
End Sub
'-------END COPY