error 381 en tiempo de ejecución no se puede obtener la propiedad list. Indice de matriz de propiedades no valido

5 envíos / 0 nuevos
Último envío
Giannine
Imagen de Giannine
Offline
última acción: Hace 3 meses 2 semanas
alta: 03/05/2020 - 19:36
Puntos: 170
error 381 en tiempo de ejecución no se puede obtener la propiedad list. Indice de matriz de propiedades no valido

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

Etiquetas: 

RET
Imagen de RET
Offline
última acción: Hace 3 meses 2 semanas
alta: 01/06/2020 - 13:29
Puntos: 290
error 381 en tiempo de ejecución no se puede obtener la propieda

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

Giannine
Imagen de Giannine
Offline
última acción: Hace 3 meses 2 semanas
alta: 03/05/2020 - 19:36
Puntos: 170
Si, estoy en excel. El error

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

RET
Imagen de RET
Offline
última acción: Hace 3 meses 2 semanas
alta: 01/06/2020 - 13:29
Puntos: 290
error 381 en tiempo de ejecución no se puede obtener la propieda

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

Giannine
Imagen de Giannine
Offline
última acción: Hace 3 meses 2 semanas
alta: 03/05/2020 - 19:36
Puntos: 170
Tienes razón! ahora si

Tienes razón! ahora si funciona como debe. Muchas gracias por el interés y la ayuda brindada RET Risa