llenado dinamico de comboBox en Hoja excel con datos de Access

21/12/2012 - 09:09 por racso63 | Informe spam
¡ Hola comunidad xls!
Tengo una hoja-formulario (excel 2010) a la que he incrustado un combobox ('comboFlotante') y dos figuras. Cada figura tiene una macro que llama a otra sub para llenar alternativamente el 'comboFlotante' con datos de 'clientes' (6 campos) o de 'bancos' (2 campos) que estan en una BdD Access (2010) que tiene las tablas respectivas y que se consulta mediante ADO. El codigo para el llenado alternativo es :

Sub llenarComboFlotante(combo As String)
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String

Set cnn = New ADODB.Connection
cnn.Open "Provider =Microsoft.ace.OLEDB.12.0;" & _
"Data Source= 'Y:\FACTURACION_BAT.accdb';"
Select Case combo
Case "clientes"
'sql = "SELECT * FROM Y:\FACTURACION_BAT.accdb.CLIENTES ORDER BY RAZON_SOCIAL"
sql = "SELECT RAZON_SOCIAL, RUC_DNI, DIRECCION, PROVINCIA, DEPART, TELEFONO FROM Y:\FACTURACION_BAT.accdb.CLIENTES ORDER BY RAZON_SOCIAL"
Case "bancos"
sql = "SELECT BANCO, NUM_CTA FROM Y:\FACTURACION_BAT.accdb.BANCOS"
End Select
Sheets("CANJE_LTRS").TempCombo2.Clear
Set rs = New ADODB.Recordset
rs.Open sql, cnn, adOpenStatic, adLockBatchOptimistic

Sheets("CANJE_LTRS").TempCombo2.Clear
rs.MoveFirst
Do
If rs.EOF = True Then Exit Do
' añado los datos al cuadro de lista
For i = 0 To rs.Fields.Count - 1
If i = 0 Then
Sheets("CANJE_LTRS").TempCombo2.AddItem rs.Fields(i)
ElseIf i > 0 Then 'si la consulta sql tiene mas de 1 campo, se llenan los combos
Sheets("CANJE_LTRS").TempCombo2.Column(1, Sheets("CANJE_LTRS").TempCombo2.ListCount - 1) = rs.Fields(i)
End If
Next i
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing

End Sub
'Nota= 'combo' es una variable que se define con evento click en cada imagen (valores = "clientes' / 'bancos')

Al llamar la rutina de llenado del 'comboFlotante' desde la imagen 'clientes me resulta este RARO error :
". . . Se ha producido el error '-2147352571 (8002005)' en tiempo de ejecución: "No se pueden configurar la propiedad Column. Los tipos no coinciden. . . "
Lo raro es que solo sucede este error cuando lo llamo desde la imagen 'clientes' y no desde la imagen 'bancos'
Lo mas raro es que no sucede este error cuando hago doble-click en dos celdas a las que he asociado el evento 'Worksheet_BeforeDoubleClick' que llama a esta misma subrutina.
Debo indicar que las macros de las 2 imagenes ademas definen las propiedades necesarias para 'comboFlotante'.
Llevo mas de una semana buscando la causa del error y no lo encuentro en ningun foro. . A proposito, no me quedo con el evento 'Worksheet_BeforeDoubleClick' , que si bien funciona, no es tan evidente para el usuario. Quisiera poder adjuntar archivo pero no se como.
Les agradezco un paciente atención . . .
 

Preguntas similares