Ingreso de datos de acuerdo a condición desde listbox (excel)

Los expertos, estoy realizando un proyecto que gracias a la ayuda directa de varios expertos he podido ir dándole forma. Uno de estos expertos (Abraham) me colaboró muchísimo con su aporte para ir descontando ingredientes (materia prima) de acuerdo a como se fueran vendiendo los productos. Luego de organizar su aporte con mi proyecto llegue a la creación de un formulario que me permite hacer lo que necesito, pero para ello necesito crear una BD de cada producto con sus ingredientes, es necesario hacerlo desde un formulario. Para ello capto los ingredientes desde el formulario CREAR PRODUCTO mediante un listbox:

Ahora, lo que necesito es llevar los datos del listbox a la hoja INGREDIENTES, el nombre del producto se encuentra en un textbox:

Entonces si por ejemplo el producto 1 contiene como ingredientes los del listbox, necesito que se ingrese la cantidad en la celda respectiva, y si no le corresponde un insumo se marque "0".

Concluyo que debo ingresar una macro que me llame el nombre del plato (que en el formulario lo tengo en un textbox) y tenga en cuenta el dato DESCRIPCION del listbox para que asi coloque en la celda respectiva el número de la cantidad. Espero haber sido claro en mi pregunta, agradezco mucho la colaboración que me presten. NOTA: Por favor no tengan en cuenta la alineación de mis columnas, estoy en eso, tratando de que CANTIDAD quede centrado y COSTO y SUBTOTAL alineados a la derecha.

1 respuesta

Respuesta
2

Hol.a

Voy a suponer varias cosas:

- Tienes un "UserForm" que contiene a "CommandButton1", a "TextBox1" y a "ListBox1".

- "ListBox1" tiene solo dos columnas: La primara con el nombre del ingrediente y la segunda con la cantidad

- En "Textbox1" tú agregas el nombre del producto de manera manual

- Los datos de productos/ingredientes están en la "Hoja1"

- Los ingredientes en el rango "A2:A9" y los productos en "B1:E1"

- He imaginado que nunca te equivocas al ingresar el nombre del producto y que sí o sí existen los ingredientes del "Listbox1"

Entonces, prueba así:

Private Sub CommandButton1_Click()
Dim nColumna As Integer, x As Integer
Dim nFila As Long
Dim Producto As Range, Ingrediente As Range, Celda As Range
'Encontramos la columna del producto
Set Producto = Worksheets("Hoja1").Range("B1:E1").Find(TextBox1)
Let nColumna = Producto.Column
'Buscamos que el ingrediente del Listbox coincida con los de la hoja
For Each Celda In Worksheets("Hoja1").Range("A2:A9")
    For x = 0 To ListBox1.ListCount - 1
        'Si coinciden llenamos con el valor correspondiente
        If Celda.Value = ListBox1.List(x, 0) Then
            Let nFila = Celda.Row
            Worksheets("Hoja1").Cells(nFila, nColumna).Value = ListBox1.List(x, 1)
            Exit For
        'Si np coinciden llenamos con cero
        Else
            Let nFila = Celda.Row
            Worksheets("Hoja1").Cells(nFila, nColumna).Value = 0
        End If
    Next x
Next Celda
End Sub

Salu2

Abraham Valencia

Buen día Abraham, excelente!!!. Funcionó perfectamente, pero tengo otra consulta con respecto a lo mismo, si la información que debo ingresar en la "Hoja" esta en el Listbox1 y en otro Listbox2, que debería hacer. Gracias.

Hola, te comento que organice el proyecto para no requerir insertar los datos del Listbox2, entonces la pregunta esta resuelta. Muchas gracias, bendiciones y estaremos en contacto. Gracias nuevamente.

Excelente :)

Muchos salu2

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas