Hola Flake, el proceso consiste en hacer una select a una tabla y con los registros recogidos llamar a una función general que está en un módulo para llenar el combo o lista. Ej.:
Private Sub sub_LlenarComboEstado()
Dim rsComboEstado As ADODB.Recordset
Dim lngRegistros As Long
strSql = "SELECT DISTINCT TES_DESESTIN, TES_CODESTIN "
strSql = strSql & "FROM ZSALESTADOLLA "
strSql = strSql & "ORDER BY TES_DESESTIN"
Set rsComboEstado = New ADODB.Recordset
rsComboEstado.CursorLocation = adUseClient
rsComboEstado.Open strSql, cntDbSAL, , adLockOptimistic, adCmdText
lngRegistros = rsComboEstado.RecordCount
Call Mod_ControlFichas.sub_LlenarComboGeneral(cmbRegEstado, rsComboEstado, lngRegistros, False, enComboVacio)
End Sub
-Función general-
Public Sub sub_LlenarComboGeneral(cmbCombo As ComboBox, rsCombo As ADODB.Recordset, lngReg As Long, blnFicha As Boolean, encComboFicha As enuCombo)
Dim lngIndice As Long
cmbCombo.Clear ' Vaciar la combo siempre antes de llenarla
For lngIndice = 0 To lngReg - 1
cmbCombo.AddItem (Trim(rsCombo.Fields(0))) ' Se muestra la descripción
cmbCombo.ItemData(cmbCombo.ListCount - 1) = Trim(rsCombo.Fields(1)) ' Se guarda el código para las búsquedas
rsCombo.MoveNext
DoEvents
Next
rsCombo.Close
Set rsCombo = Nothing
cmbCombo.ListIndex = -1
End Sub
Si se te ocurre algo para optimizarlo sería una gran ayuda.
GRACIAS