Macro validar con ComboBox y valor hallado pegar en TextBox

Necesito una macro para que el ComboBox2 seleccione un dato, este lo busque en la hoja "Datos" y devuelva el valor hallado en el TextBox7.

Detallo encabezados de hoja "Datos", columna A(Courier), B(Servicio), C(Placa), D(Transportista).

El ComboBox2 busca en la columna "C" y tiene que devolver el dato de la columna "D" en el TextBox7.

Adjunto código fuente usado hasta este momento.

Private Sub UserForm_Activate()
    Set h = Sheets("Datos")
    If h.AutoFilterMode Then h.AutoFilterMode = False
    For i = 2 To h.Range("C" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox2, h.Cells(i, "C").value)
    Next
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox4, h.Cells(i, "A").value)
    Next
    TextBox7.value = ""
End Sub
Respuesta
2

Micky Perú,

Adjunto en enlace archivo excel el desarrollo de tu consulta para su revisión.

Espero que te sirva de ayuda y este acorde a tu necesidad. Cualquier consulta estaré atento.

Por favor, no olvidar de valorar las respuestas, gracias de antemano.

Formulario obtener datos a partir de un combobox

Ander GS.

Hola Ander, ante todo agradecerte por la pronta respuesta. Te comento que si funciona en tu archivo y es lo que necesito, puedes indicarme como lo puedo acoplar a mi código.

Adjunto código del ComboBox2 y ComboBox4. Ambos funcionan bien.

Considera que necesito la información del ComboBox2 en el TextBox7.

Private Sub UserForm_Activate()
    Set h = Sheets("Datos")
    If h.AutoFilterMode Then h.AutoFilterMode = False
    For i = 2 To h.Range("C" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox2, h.Cells(i, "C").value)
    Next
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox4, h.Cells(i, "A").value)
    Next
 End Sub

Estimado Ander, revisando logré realizarlo.

Muchas gracias por tu gentil enseñanza.

Ander GS favor tu apoyo, ya que ingreso la macro que me brindaste pero me jala los datos de la hoja "Report" y no me jala los datos de la hoja "Datos".

Adjunto código del Módulo1

Sub MostrarFormulario()
'Se carga los número de placas en el combobox, asumiendo que son número únicos
For i = 2 To Range("C2").End(xlDown).Row
    UserForm1.ComboBox2.AddItem Range("C" & i)
Next i
UserForm1.Show 0
End Sub

Adjunto código del ComboBox2

Private Sub ComboBox2_Change()
TextBox7.Text = Cells(ComboBox2.ListIndex + 2, 4)
End Sub

Que bueno que te haya servido de utilidad el aporte.

Con respecto a tu inconveniente de que jala datos de la hoja "Report" y no "Datos".

1. Una opción para que funcione correctamente es que cuando se ejecute la macro "MostrarFormulario" la hoja "Datos" sea la hoja activa.

2. La otra opción, es agregar al código la indicación que tome los valores de la hoja "Dato" y el código modificado es:

Sub MostrarFormulario()
'Se carga los número de placas en el combobox, asumiendo que son número únicos
For i = 2 To Range("C2").End(xlDown).Row
    UserForm1.ComboBox2.AddItem WorkSheets("Datos").Range("C" & i)
Next i
UserForm1.Show 0
End Sub

Espero que con eso se solucione tu inconveniente. Cualquier consulta estaré pendiente.

Por favor no olvidar de valorar las respuestas.

Ander GS no funciona, tal vez este haciendo haciendo algo mal. Me sigue jalando desde la hoja "Report" y no desde la hoja "Datos".

Adjunto el código para tu revisión. Favor tu apoyo

Private Sub UserForm_Activate()
    Set h = Sheets("Datos")
    If h.AutoFilterMode Then h.AutoFilterMode = False
    For i = 2 To h.Range("C" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox2, h.Cells(i, "C").value)
    Next
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox4, h.Cells(i, "A").value)
    Next
    'Se carga los número de placas en el combobox, asumiendo que son número únicos
    For i = 2 To Range("C2").End(xlDown).Row
    UserForm1.ComboBox2.AddItem Worksheets("Datos").Range("C" & i)
    Next
End Sub

Según el código debería funcionar, quizás tengas otro evento que ejecuta la carga del combobox con los datos de la hoja "Report".

Private Sub UserForm_Activate()
    Set h = Sheets("Datos")
    If h.AutoFilterMode Then h.AutoFilterMode = False
    For i = 2 To h.Range("C" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox2, h.Cells(i, "C").value)
    Next i
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox4, h.Cells(i, "A").value)
    Next i
    For i = 2 To h.Range("C2").End(xlDown).Row
    Me.ComboBox2.AddItem h.Range("C" & i)
    Next i
End Sub 

Prueba con este código, en caso sigas con el inconveniente, si puedes comparte tu archivo de trabajo para poder revisar todo el código e identificar el inconveniente.

Recuerda que el código que te proporcione esta basado en un ejemplo que se elaboró dado que no contábamos con un archivo de trabajo o de ejemplo, el tema ahora es adaptar esa solución a tus necesidades, es por ello la importancia de que las consultas que se realizan en el foro deben brindarlo de manera detallada y acompañado de un ejemplo de la consulta en un archivo excel, así tendríamos un entendimiento mejor de sus necesidades.

Estaré atento a tu respuesta.

Ander GS.

@Andre GS te agradezco por la paciencia y las enseñanzas.

Adjunto archivo.

https://www.dropbox.com/s/2aol41adprmgx5q/Andre%20GS.xlsm?dl=0 

He ejecutado el botón despacho y he seleccionado el botón moto y el formulario si carga los datos de la hoja "Datos", no hubo inconvenientes.

Estaré atento a tu respuesta.

Ander GS.

Estimado, si te sitúas en la hoja "Report", ejecutas el botón despacho, seleccionas moto, seleccionas placa y no aparece al nombre. Sin embargo si lo ejecutas situado en la hoja "Datos" si funciona, con la observación que duplica la placas.

Situado en la Hoja "Datos" si funciona, pero duplica las placas.

Situado en la Hoja "Report" Sale el nombre de transportista en blanco.

Primera corrección, no se indico la hoja "Datos" en el evento CHANGE del combobox2

Private Sub ComboBox2_Change()
TextBox7.Text = Worksheets("Datos").Cells(ComboBox2.ListIndex + 2, 4)
End Sub

Segunda corrección, has colocado dos veces el mismo procedimiento pero con diferente código, para cargar los items en el combobox 2, en el evento para activar el formulario.

Private Sub UserForm_Activate()
    Set h = Sheets("Datos")
    If h.AutoFilterMode Then h.AutoFilterMode = False
'    For i = 2 To h.Range("C" & Rows.Count).End(xlUp).Row
'        Call Agregar(ComboBox2, h.Cells(i, "C").value)
'    Next i
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        Call Agregar(ComboBox4, h.Cells(i, "A").value)
    Next i
    For i = 2 To h.Range("C2").End(xlDown).Row
    Me.ComboBox2.AddItem h.Range("C" & i)
    Next i
End Sub

Estoy adjuntando enlace archivo excel con las correcciones hechas para su revisión.

Estaré atento a tu respuesta. 

https://drive.google.com/open?id=13Z9fnZXyrrXS9R2z9W9IemGtt4A6dTz-

Ander GS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas