Hola,
El segundo (o más) campo lo tienes que cargar en la propiedad Column(NumCol, NumFila), ten en cuenta que el primer índice de columna es 0 (cero).
Te pongo cómo haría yo esa función:
Código:
Function carga_combo_moneda()
Set tabla_moneda = Nothing ' <-- instrucción innecesaria ya que a continuación creas un nuevo recordset
Set tabla_moneda = New ADODB.Recordset
tabla_moneda.Open "SELECT * FROM Moneda ORDER BY id", conexionbase, adOpenDynamic, adLockOptimistic
If tabla_moneda.RecordCount = 0 Then
MsgBox "no existen registros", vbExclamation, "Mensaje"
Exit Function
End If
Dim i As Long
With CmbBox
''''' Las siguientes propiedades las puedes poner en diseño
.ColumnCount = 2 ' número de columnas a mostrar
.ListRows = 15 ' número de items visibles al desplegar
.ColumnWidths = "30pt;50pt" ' ancho de las columnas en puntos
.TextColumn = 2 ' valor de la columna al seleccionar
.Value = "Selecciona moneda..." ' texto del combo
'''''
tabla_moneda.MoveFirst ' <-- instrucción innecesaria, ya que al abrir un nuevo recordset siempre se posiciona en el primer registro
While Not tabla_moneda.EOF
.AddItem tabla_moneda!simbolo ' Primera columna
.Column(1, i) = tabla_moneda!nombre ' Segunda columna
tabla_moneda.MoveNext
i = i + 1
Wend
End With
End Function
y en el evento Click del ComboBox:
Código:
Private Sub CmbBox_Click()
' la propiedad Value muestra la primera columna y Text la indicada en la propiedad TextColumn
MsgBox CmbBox.Value & " - " & CmbBox.Text
End Sub
Un saludo.