Combobox dependientes de otro combobox no me trae bien los datos

Buenos días

tengo un problema con unos cmb dependientes. Paso a axplicar

tengo un cmbcodigo que lo lleno con la propiedad rowsource, cuando empiezo a escribir el código me va dando las opciones de los códigos que tengo. Una vez elegido el código me llena el cmbdescripcion ( también lleno con rowsource) y el txtprecio. Aca me surge el lio porque cuando dos códigos distintos tienen la misma descripción me trae los datos del que se encuentra primero.

Ej si tengo

Código descripción precio

Hd 22 reloj 33

FK 15 reloj 45

cuando en cmbcodigo empiezo a poner la F ya me pone Hd 22 ( la F nunca aparece) probé sacándole al cmbdescripcion la propiedad rowsource pero me hace lo mismo.

por el momento lo solucione cambiando las descripciones EJ reloj, reloj1 pero no me gusta.

Bueno espero me entiendan

Desde ya muchas gracias

1 Respuesta

Respuesta
1

Pásame el archivo desde www.programarexcel.blogspot.com/p/contacto.html

Lo reviso y envío con la solución.

Por favor describe bien lo que deseas lograr lo mas detalladamente posible, gracias.

http://programarexcel.blogspot.com/2013/06/llenar-listbox-dependiendo-de-otro.html ahí tienes un ejemplo de llenado dependiendo de otro control.

Ya te envíe el ejemplo

Lo vi en el mail a la brevedad te respondo

Mientras visita www.programarexcel.com, encontrarás macros para descargar de ejemplo.

Yo modificaría el código de la forma siguiente, a mi me parece que el combo box lo deberías reemplazar por un text box, porque el código es único y no admite varias descripciones hace referencia a un solo producto y por ende no tiene varias descripciones. Si tu estás buscando con el código, es suficiente una vez encontrado luego agregas los datos a los textbox, es una simple sugerencia.

Sucede que cuando buscas el dato el set tiene por ejemplo el valor 1001 y tu luego pones busco.offset(0,1), eso no es correcto la máquina no lo entiende, deberías obtener la dirección del valor buscado primero, eso se hacer con diré=busco.address luego de eso si puedo usar offset de la siguiente forma Sheets("productos").Range(diré).Offset(0, 2).Value.

Prueba para ver si es lo querías obtener del código y me comentas.

Private Sub cmbcodigo_Change()
dato = cmbcodigo.Value
Set busco = Sheets("PRODUCTOS").Range("A:A").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
dire = busco.Address
'si lo encontró pasa los datos del resto de col a los textbox
If Not busco Is Nothing Then
cmbdescripcion = Sheets("productos").Range(diré).Offset(0, 1).Value
'cmbdescripcion = busco.Address.Offset(0, 1) 'col B
txtStock = Sheets("productos").Range(diré).Offset(0, 2).Value
Txtprecio = Sheets("productos").Range(diré).Offset(0, 3).Value
'txtStock = dire.Offset(0, 2) 'col C
'Txtprecio = dire.Offset(0, 4) 'col E
Else
'si no encontró datos deja los textbox vacíos
cmbdescripcion = ""
txtStock = ""
Txtprecio = ""
End If
End Sub

probé pero me tira: error definido por la aplicación o el objeto

me marca la linea que te deje separada. igualmente ya estaba pensando en cambiar el cmb por un textbox y con tu consejo me ayuda a decidirme.

Si se puede arreglar no lo cambio porque a veces hay productos que pierden el papel en donde tienen el código y me parecía buena idea poder buscar el producto por descripción.

Private Sub cmbcodigo_Change()
dato = cmbcodigo.Value
Set busco = Sheets("PRODUCTOS").Range("A:A").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
diré = busco.Address
'si lo encontró pasa los datos del resto de col a los textbox
If Not busco Is Nothing Then


cmbdescripcion = Sheets("productos").Range(diré).Offset(0, 1).Value


'cmbdescripcion = busco.Address.Offset(0, 1) 'col B
txtStock = Sheets("productos").Range(diré).Offset(0, 2).Value
Txtprecio = Sheets("productos").Range(diré).Offset(0, 3).Value
'txtStock = diré.Offset(0, 2) 'col C
'Txtprecio = diré.Offset(0, 4) 'col E
Else
'si no encontró datos deja los textbox vacíos
cmbdescripcion = ""
txtStock = ""
Txtprecio = ""
End If
End Sub

Saludos

Bien me suponía eso de poder buscar. Pero yo haría un cambio . Si buscaste por código anular el coMbo para descripción porque podrías elegir un codigoby prod difErente tal como esta programado. Deja que Lo vea ahora que aclaras Esto.

Mientras visiTa www.programarexcel.com Encontraras macros de ejemplO gratis que te pueden Servir.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas