Ciao ragazzi!

Sto popolando una combobox in questo modo per ottenere performance migliori rispetto al metodo AddItem:

codice:
Public Sub subPopolaComboAPI(cmbNomeCombo As ComboBox, _
    strNomeTabella As String, _
    strNomeCampo)
    
    Dim strValore As String
    
    cmbNomeCombo.Visible = False

    Call SendMessage(cmbNomeCombo.hwnd, CB_RESETCONTENT, 0&, ByVal 0&)
    cmbNomeCombo.AddItem ""
    ' *************************************************************
    ' Popolo la lista delle aziende
    ' *************************************************************
    Dim rsPopolaCombo As Recordset
    Set rsPopolaCombo = New Recordset
    rsPopolaCombo.Open "SELECT ID," & strNomeCampo & " FROM " & strNomeTabella & _
        " ORDER BY " & strNomeCampo, Connessione
    
    Do While Not rsPopolaCombo.EOF

        ' ********************************************************
        ' Assegno l'indice all'elemento della list box uguale
        ' all'ID che trovo all'interno della tabella.
        ' ********************************************************
        strValore = rsPopolaCombo(strNomeCampo)
        Call SendMessage(cmbNomeCombo.hwnd, CB_ADDSTRING, _
ByVal rsPopolaCombo!ID, ByVal strValore)
        
        rsPopolaCombo.MoveNext
    Loop

    rsPopolaCombo.Close
    Set rsPopolaCombo = Nothing
    ' *************************************************************
    
    cmbNomeCombo.Visible = True

End Sub
Quando però vado ad interpellare la combo per vedere quale valore è stato selezionato dall'utente, ovvero:
codice:
msgbox cmbNomeCombo.ItemData(cmbNomeCombo.ListIndex)
l'applicazione mi restituisce sempre e solo 0.
Dove sto sbagliando?

Sicuramente l'inghippo sta qua:
codice:
Call SendMessage(cmbNomeCombo.hwnd, CB_ADDSTRING, _
ByVal rsPopolaCombo!ID, ByVal strValore)
Io credevo che con
codice:
ByVal rsPopolaCombo!ID
si potesse passare alla combobox il valore da assegnare ad ogni singola selezione, ma così non è.

Qualcuno mi può aiutare?

Ciao!