Cambiar contenido de textbox al seleccionar opción en combo box

Hola.DAM

Tengo este código que ha bien has tenido en hacerme llegar, funciona a la perfección, yo agregué tres líneas más para complementar el Formulario solo que surge una duda y es en la siguiente parte. Como podrás ver existen tres cajas de texto en las que se deberá poner la descripción, ubicación y existencias, y lo hace, el problema es que toma el valor de la primera linea y no el valor que le corresponde según sea la selección del producto en el Combo. Pregunta ¿Qué debo hacer para que las cajas adicionales tomen el valor según la selección del código y del producto?. Espero haber sido claro.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

'por.DAM

ComboBox1.Clear

For i = 2 To Range("A" & Rows.Count).End(xlUp).Row

If Cells(i, "A") = Val(TextBox1) Then

ComboBox1.AddItem Cells(i, "B")

TextBox2.Value = Cells(i, 3) 'descripción

TextBox3.Value = Cells(i, 4) 'ubicación

TextBox4.Value = Cells(i, 5) 'existencias

End If

Next If

ComboBox1.ListCount = 0 And TextBox1 <> "" Then

MsgBox "Código no existe: " & TextBox1 TextBox1 = "" Cancel = True

Exit Sub

End If

End Sub

'Te dejo cordiales saludos y agradezco de antemano tus atenciones

1 respuesta

Respuesta
1

Reemplaza la macro por estas

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'por.DAM
ComboBox1.Clear
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
   For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
      If Cells(i, "A") = Val(TextBox1) Then
        ComboBox1.AddItem Cells(i, "B")
        ComboBox1.List(ComboBox1.ListCount - 1, 1) = i
      End If
   Next
    If ComboBox1.ListCount = 0 And TextBox1 <> "" Then
        MsgBox "Código no existe: " & TextBox1
        TextBox1 = ""
        Cancel = True
    End If
End Sub
'Cuando cambia el combo se actualizan los textbox
Private Sub ComboBox1_Change()
'Por.daM
j = ComboBox1.List(ComboBox1.ListIndex, 1)
    TextBox2.Value = Cells(j, 3) 'descripción
    TextBox3.Value = Cells(j, 4) 'ubicación
    TextBox4.Value = Cells(j, 5) 'existencias
End Sub

Saludos.Dam
Si es lo que necesitas.

Hola

Es justo lo que necesito, solo tengo un problema si la línea combobox1.clear la mantengo inactiva, funciona bien con el detalle de que almacena todos los productos aun cuando es nuevo código. Si activo esa línea, envía un error en la línea.

j=ComboBox1.List(ComboBox1.ListIndex,1)

Este es el mensaje de Error

No se puede obtener la propiedad List. Índice de la matriz de propiedades no Válido.

Que debo hacer para solucionar este error.

Saludos

Cambia la segunda macro por esta

Private Sub ComboBox1_Change()
'Por.daM
If ComboBox1.ListIndex > -1 Then
j = ComboBox1.List(ComboBox1.ListIndex, 1)
TextBox2.Value = Cells(j, 3) 'descripción
TextBox3.Value = Cells(j, 4) 'ubicación
TextBox4.Value = Cells(j, 5) 'existencias
End If
End Sub

Saludos.DAM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas