Hola,
Tengo un listbox en un formulario de excel que muestra solo 1 campo (descripción) de una tabla de 4 campos (Código, Descripción, UnidDistr, Precio) de access. Al presionar enter en el dato seleccionado del listbox debe copiar los 4 campos en 4 textbox, pero solo me copia los campos Código y Descripción; y luego me muestra el error 381. Alguien sabe porque?
Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
With ListBox1
Txt_Codigo.Value = .List(.ListIndex, 0)
Txt_Buscar_Producto.Value = .List(.ListIndex, 1)
Txt_Unid_Distr.Value = .List(.ListIndex, 2) -------> En esta linea muestra el error
Txt_Precio_Lista.Value = .List(.ListIndex, 3)
End With
End If
End Sub
Asigno número de columnas:
.ColumnCount = Rs.Fields.Count
.ColumnWidths = "0;120;0;0"
LLeno datos al listbox
Rs.MoveFirst
i = 0
With Form_Buscar_Productos.ListBox1
Do
.AddItem
.List(i, 0) = Rs![CÓDIGO]
.List(i, 1) = Rs![DESCRIPCIÓN]
.List(i, 2) = Rs![UNIDDISTR]
.List(i, 3) = Rs![PRECIO]
i = i + 1
Rs.MoveNext
Loop Until Rs.EOF
End With
A primera vista tu código está bien.
Entiendo, además, que cargas bien los datos desde el recordset a tu listbox, así que, está bien configurado, con los 4 campos.
No dices si te pasa siempre o solo a veces. Supongo que ya has comprobado el nombre del textbox y se corresponde con el que usas en el código.
El valor del campo UNIDDISTR que cargas en Rs, no será NULL? Teoricamente, debería darte error al cargar un valor Null en el ListBox, pero por si acaso, compruebalo. También puedes, para depurar, anchar los campos del ListBox para dejar todos los datos vistos y comfirmar que existen y son OK.
Por lo que te entiendo, estás en Excel. Repito que dudo que sea lo del NUll, pero si fuese prueba a, cuando cargas los datos del recordset al listbox, hacer un .List(i, 2) = Nz(Rs![UNIDDISTR],0). Tienes que hacer referencia a la libreria Microsoft Access XX.Y Object Library
Ya dirás...
IMF_RET
Visitame en https://InformaticaMuyFacil.com
Si, estoy en excel. El error siempre es en ese campo, tengo el mismo codigo para mostrar datos de otra tabla de access y no tengo ningún problema, no puede ser NULL porque el campo UNIDDISTR si tiene datos como UNID, DISP, BOLS, etc. y en la tabla access el "tipo de dato" para ese campo es "Texto corto". Cuando trato de cargar o anchar los 4 campos en el listbox, me muestra todos los datos correctamente, el problema es cuando los datos pasan a los textbox, pasan los 2 primeros campos ( Código y Descripción) en sus respectivos textbox y luego me muestra el mismo error y en la misma linea. Quiero aclarar que el listbox lo uso como una lista desplegable cuando escribo algo en el textbox (Txt_Buscar_Producto). Dejo el siguiente link para que puedan ver mi problema. https://postimg.cc/7fXL63ZS
Creo que lo que te pasa es que usas el textbox Txt_Buscar_Producto para buscar tus productos. Cuando escribes algo, te filtra el listbox. En la imagen que mandas, te filtra 3 entradas. Seleccionas una entrada, que tiene un valor ListIndex y copias el dato del código a Txt_Codigo. Hasta aqui, bien. Pero lo siguiente que copias es la descripcion a Txt_Buscar_Producto y eso te modifica lo que muestra el ListBox (ya solo uno de tus articulos coincide) y te cambia el valor de Index.
Modifica el orden de copiar los datos para que descripcion sea el ultimo que copies.
IMF_RET
Visitame en https://InformaticaMuyFacil.com
Tienes razón! ahora si funciona como debe. Muchas gracias por el interés y la ayuda brindada RET
Tenía el mismo problema y me funcionó el código, gracias
Me has solucionado también a mi el problema. Eres un crack! Muchas gracias!!