ComboBox dependientes que carguen TextBox

Tengo un formulario para agregar productos a un formulario factura, este formulario tiene 3 combobox, uno dependiente del otro, el primero -COMBOBOX1- me llama la categoría de productos, el segundo -COMBOBOX2- me llama la subcategoria de productos de acuerdo al valor del COMBOBOX1, hasta aquí no hay problema. Cargar el COMBOBOX3 -productos- si me ha generado inconvenientes pues he encontrado varios códigos en internet pero ninguno que pueda modificar a lo que necesito, ya que necesito que el COMBOBOX3 (productos) se cargue de la hoja donde tengo la BD PRODUCTOS, teniendo en cuenta tres columnas: CATEGORÍAS - SUBCATEGORIAS - PRODUCTOS, y estos datos no están separados ni por grupo de categorías ni por grupo de subcategorias porque los productos se dan de alta de acuerdo a como van llegando al almacén y esto sucederá siempre de manera aleatoria, así que no puedo separar por rangos.

Además, cuando el COMBOBOX3 se cargue con un dato de producto, deben llenarse los valores de unos TextBox que hay en el formulario, de manera independiente (sin tener en cuenta los dos primeros COMBOBOX) logro hacerlo, pero el inconveniente de no cargar este tercer combobox con los datos del segundo, no permite cargar los textbox. La idea de realizar esta operación por categorías y subcategorías es para facilitar al usuario la búsqueda de productos que en algún momento se hará muy larga.

Tengo un archivo, que puedo enviarles para que puedan entender mejor, pues no sé si me expliqué bien.

1 respuesta

Respuesta
1

Te anexo el código

Dim h1, h2, h3, h4
'
Private Sub ComboBox1_Change()
'Act.Por.Dante Amor
    'carga el combo2 (subcategoría)
    ComboBox2.Clear
    ComboBox3.Clear
    Call Limpiar_Textbox
    If ComboBox1 = "" Or ComboBox1.ListIndex = -1 Then
        Exit Sub
    End If
    '
    col = ComboBox1.ListIndex + 1
    u2 = h2.Cells(Rows.Count, col).End(xlUp).Row
    For i = 2 To u2
        ComboBox2.AddItem h2.Cells(i, col)
    Next
End Sub
'
Private Sub ComboBox2_Change()
'Act.Por.Dante Amor
    'carga el combo3 (productos)
    ComboBox3.Clear
    Call Limpiar_Textbox
    '
    If ComboBox2 = "" Or ComboBox2.ListIndex = -1 Then
        Exit Sub
    End If
    u3 = h3.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To u3
        If h3.Cells(i, "A") = ComboBox1 And _
           h3.Cells(i, "B") = ComboBox2 Then
            ComboBox3.AddItem h3.Cells(i, "D")
        End If
    Next
End Sub
'
Private Sub ComboBox3_Change()
'Act.Por.Dante Amor
    'carga los textbox
    Call Limpiar_Textbox
    If ComboBox3.Text = "" Or ComboBox3.ListIndex = -1 Then
        Exit Sub
    End If
    'Solicito la información de la hoja de existencias para que se reflejen en los controles
    Set b = h4.Columns("B").Find(ComboBox3.Value, lookat:=xlWhole)
    If Not b Is Nothing Then
        txt_Codigo = h4.Cells(b.Row, "A")
        txt_Nombre = h4.Cells(b.Row, "B")
        txt_Existencia = h4.Cells(b.Row, "C")
        txt_PrecioVenta = FormatNumber(h4.Cells(b.Row, "D").Value, 2)
    End If
End Sub
'
Private Sub UserForm_Activate()
'Act.Por.Dante Amor
    Set h1 = Sheets("Categorias")
    Set h2 = Sheets("subcategorias")
    Set h3 = Sheets("Productos")
    Set h4 = Sheets("Existencia")
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To u1
        ComboBox1.AddItem h1.Cells(i, "A")
    Next
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias! Me funcionó perfecto. Te agradezco, voy a incluir el resto del código del formulario y cualquier cosa te aviso. Mil gracias, un abrazo y bendiciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas