Enlazar comcobox con otro combobox y guardar los valos de ambos en hoja y columnas especificas

Como están.?

Saludos, me gustaría que me ayudaran por favor en lo siguiente:

Tengo el siguiente código en cual le agregue lo que coloco en negrita para que me extraiga el nombre del producto dependiendo del lote que elija en el combobox llamado "LOTE2", esto ha generado error, si pueden ayudarme para hacer que el combobox1 busque el nombre del producto basado en el lote que se elija en combobox llamado "LOTE2" y que al momento de guardar esos valores se guarden como se especifica en el código que se describe a continuación:

Private Sub GUARDAR2_Click()
    Dim ContFila As Long
    Dim hoja As Worksheet
    Set hoja = Worksheets(4)
        ContFila = hoja.Cells(Rows.Count, 7).End(xlUp).Offset(1, 0).Row
        hoja.Cells(ContFila, 2).Value = FECHA2.Value
        hoja.Cells(ContFila, 3).Value = Me.LOTE2.Value
        hoja.Cells(ContFila, 4).Value = Me.ComboBox1.Value
        hoja.Cells(ContFila, 5).Value = Me.AREA2.Value
        hoja.Cells(ContFila, 6).Value = Me.CANTIDAD2.Value
        hoja.Cells(ContFila, 7).Value = Me.UNIDAD2.Value
        hoja.Cells(ContFila, 8).Value = Me.RECIBE.Value
        hoja.Cells(ContFila, 13).Value = Me.OBSERVA2.Value
Rem baciar formulario
Me.LOTE2.Value = ""
Me.AREA2.Value = ""
Me.ComboBox1.Value = ""
Me.CANTIDAD2.Value = ""
Me.UNIDAD2.Value = ""
Me.RECIBE.Value = ""
Me.OBSERVA2.Value = ""
FECHA2.SetFocus
End Sub
Private Sub GUARDAR1_Click()
    Dim ContFila As Long
    Dim hoja As Worksheet
    Set hoja = Worksheets(3)
        ContFila = hoja.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        hoja.Cells(ContFila, 1).Value = FECHA1.Value
        hoja.Cells(ContFila, 2).Value = Me.PROVEDOR1.Value
        hoja.Cells(ContFila, 3).Value = Me.FACTURA1.Value
        hoja.Cells(ContFila, 4).Value = Me.CONTROL1.Value
        hoja.Cells(ContFila, 5).Value = Me.PRODUCTO1.Value
        hoja.Cells(ContFila, 7).Value = Me.CANTIDAD1.Value
        hoja.Cells(ContFila, 8).Value = Me.UNIDAD1.Value
        hoja.Cells(ContFila, 9).Value = Me.PRECIO1.Value
        hoja.Cells(ContFila, 13).Value = Me.OBSERV1.Value
Rem baciar formulario
Me.PROVEDOR1.Value = ""
Me.FACTURA1.Value = ""
Me.CONTROL1.Value = ""
Me.PRODUCTO1.Value = ""
Me.CANTIDAD1.Value = ""
Me.UNIDAD1.Value = ""
Me.PRECIO1.Value = ""
Me.OBSERV1.Value = ""
FECHA1.SetFocus
End Sub
Private Sub LOTE2_Change()
ComboBox1.Text = Application.WorksheetFunction.VLookup(LOTE2.Text, Range("B:C"), 2, 0)
End Sub
Private Sub SALIR1_Click()
Unload Me
End Sub
Private Sub SALIR2_Click()
Unload Me
End Sub
Private Sub UserForm_Click()
End Sub

1 respuesta

Respuesta
2

Prueba cambiado lote2.text por val(lote2.text), estas buscando números convertidos a texto en columnas numéricas

Sr. James Bond gracias por su pronta respuesta, pero hice su recomendación y me arroja error.

Que podría hacer.? Gracias.!

No había notado varias cosas en la línea que programaste, la primera es como dije el cambiar a valor, la segunda es el que tienes el combobox1.text y eso para los combobox no aplica lo que aplica es el combobox1. Value, y la tercera tienes un evento change este evento va a buscar conforme vayas teclando por ejemplo si tecleas 42 y empiezas tecleando 4 los buscara al no dar con el numero te enviara un mensaje de error y detendrá la macro esto se arregla así cambiando el evento a afterupdate o bien haciendo estos arreglos en la macro, ahora si tecleas la macro igual seguirá buscando al encontrar error este limpiara el combobox en caso contrario pondrá el numero en el combobox.

Private Sub TextBox1_change()
On Error Resume Next
ComboBox1.Value = WorksheetFunction.VLookup(Val(TextBox1.Text), Range("B:C"), 2, 0)
If Err.Number > 0 Then ComboBox1.Value = Empty
On Error GoTo 0
End Sub

Hola nuevamente Sr. James Bond, le comento que hice su recomendación y no me da error pero, no me extrae y no me refleja el nombre del producto en el TextBox1. Como hago para enviarte el archivo y así puedas ver donde esta el error para que me ayudes por favor.!

Sube el archivo a un servicio de nube y pegas el link aquí

https://drive.google.com/open?id=1Fh-kT8HNfKRAuExssoneVjjs-lRMZWXE 

Le hice un pequeño cambio a tu macro y pero antes te explico lo siguiente, este es el resultado seleccionas un producto del combobox no lote y desde el combobox se realiza la búsqueda para poner el resultado en el campo producto y aquí viene la explicación del porque no te funciona

1.- Lote2.value esta mal declarada el punto value es para ciertos objetos como listbox,textbox, combobox no para variables que deben ser declaradas asi lote2=......

2.- Tu mandas llamar al formulario desde la hoja menu y le pides a la macro que haga la búsqueda solo que no le especificas de que hoja y por consiguiente la macro toma como referencia la hoja activa en este caso menu, al no existir nada en el rango B:C de esa hoja pues simplemente no te mostrara nada la sentencia range("b:C") debe ir así worksheets("productos"). Range("b:c"), con esto le indicas a la macro que lea el rango en cuestión de la hoja producto.

y esta es la macro adaptada a tus datos

Private Sub ComboBox1_Change()
On Error Resume Next
producto = ComboBox1.Value
lote2 = WorksheetFunction.VLookup(producto, Worksheets("productos").Range("B:C"), 2, 0)
If Err.Number > 0 Then
    lote2 = Empty
Else
    TextBox1.Text = lote2
End If
On Error GoTo 0
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas