Buscar datos con un ComboBox y pasar a un textBox

Tengo una base de datos con 5 columnas. Y he creado un userform que contiene un ComboBox y dos textBox. Lo que necesito es buscar con el ComboBox el dato de la primera columna y que me arroje los datos de las columnas 4 y 6 de la respectiva fila. ¿Ahora cómo hago el código? Se que en este lugar habrá alguien con la suficiente fuerza de voluntad para poder Ayúdarme y así llegar a mi cometido. Muchísimas gracias por vuestra ayuda. PD: no tengo mucho conocimiento técnico de macros en excel si me podeis ayudar con un código...

2 Respuestas

Respuesta
4

Te anexo las macros que debes poner en tu formulario, te puse algunos comentarios en las líneas para mayor comprensión.

Private Sub ComboBox1_Change()
'Por.Dante Amor
    'Mostrar en los textbox los datos según el combo
    '
    'limpia los textbox
    TextBox1 = ""
    TextBox2 = ""
    '
    'obtiene el número de fila
    f = ComboBox1.ListIndex + 2
    '
    'si no elegiste un dato del combo se sale
    If f = 1 Then Exit Sub
    '
    'si elegiste un dato del combo te muestra los valores en los textbox
    TextBox1 = Cells(f, "D")
    TextBox2 = Cells(f, "F")
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
    'cargar los datos de la columna A en el combo
    ComboBox1.RowSource = "A2:A" & Range("A" & Rows.Count).End(xlUp).Row
End Sub

Te anexo mi archivo para que realices pruebas.

https://www.dropbox.com/s/cm7hbra12p4vlfj/formulario%2026feb.xlsm?dl=0 

Saludos. Dante Amor

¡Gracias! que fabuloso encontrar gente que te ayuda sin conocerte. ... ya me quiero hacer un experto para poder hacer lo mismo. ...

Y voy a ver tu solución y adaptarlo a mi problema. .... Muchas gracias. .

Respuesta
3

En este link dejé respuesta a consulta similar a la tuya.

Debes hacer doble clic en el botón del combo y allí copiar el código, ajustando los nombres de tus controles.

Si luego necesitas de algún ajuste avisame con todos los detalles.

Si el tema queda resuelto no olvides valorar la respuesta.

Sdos!

Por si te presenta alguna dificultad, te dejo la macro según la ubicación de tus datos. Ajusta los nombres de los controles (combo y textbox si son diferentes).

Private Sub Combobox1_Change()
'x Elsamatilde
On Error Resume Next
Set busco = ActiveSheet.Range("A:A").Find(Trim(ComboBox1.Value), LookIn:=xlValues, lookat:=xlWhole)
'si lo encuentra pasa los datos de la fila a los textbox
If Not busco Is Nothing Then
    TextBox1.Value = busco.Offset(0, 3)   'col D
    TextBox2.Value = busco.Offset(0, 5)   'col F
End If
End Sub

Sdos!

¡Gracias!  Por la pronta respuesta voy a hacer lo que me están indicando. Y le comento el resultado luego. ..

Muchas gracias

Gracias por tu tiempo en responderme. ...

He aplicado el código que me enviaste y no logro dar aún con el resultado que estoy buscando. Que es el que encuentre el dato del ComboBox1 y que me copie sus respectivos datos,que se encuentran en la misma fila. Al aplicar el código no me muestra ningún error. Que piensas que pudiera estar haciendo mal? 

Los combos guardan sus valores como 'texto' y quizás en tu hoja los tengas en formato numérico... Si es así anteponé VAL en la función de búsqueda:

Set busco = .......Find(Val(Combobox1),lookin:=.............

Si no es eso debieras dejar imagen de algunos de tus datos o revisar cómo realizas la carga del combobox (con o sin mayúsculas, espacios, etc).

Si no encontrás el motivo podés enviarme tu hoja para que la revise. Mi correo aparece en mi sitio que dejo al pie.

¡Muchas gracias! Si funciona correctamente ahora. ...

Gracias por tu colaboración me has iluminado el día! !

Ahora puedo terminar parte de mi punto de venta que estoy haciendo.

A duras penas la voy haciendo pero ya falta poco. ..

Mmmmm..... disculpa ahora el código me funciona para hacerlo en una hoja que esta activa...

Que código le escribo para que la búsqueda de los datos se haga en otra hoja?  

Será que es cambiando sólo activeSheet.?

Serias tan gentil de guiarme???

Solucionado. ...

Cambie el activesheet por la hoja y ya esta funcionando. ......!!!!!!!

Si, en lugar de ActiveSheet reemplaza por:

Set busco = Sheets("Hojax").Range(................

Donde 'Hojax' debiera ser el nombre de tu hoja.

Sdos!

¡Gracias y muchos saludos.!!!!

Cuando estoy con esto. .... me lleno de emoción y aspiro a tener esos conocimientos como los que tienes. ...

Por que ello es"PODER"

Mil gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas