Macro para restar cantidad de artículos en otro libro desde el formulario factura.

Solicito la ayuda de un experto en VBA Excel para resolver el siguiente tema:
Tengo un formulario de factura (ver imagen1), donde cargo los artículos en la columna “Código” (controles ComboBoxs) para colocar la cantidad a facturar en la columna “Cantidad” (TextBoxs) de cada renglón.

Cómo puedo hacer que la macro ejecute la sustracción a la cantidad introducida por el usuario en el formulario de tal modo que, reste la cantidad de ese artículo en la hoja “Artículos” de otro libro al momento de guardar la factura (ver imagen2).
Es de hacer notar que cuando selecciona el código del artículo en el formulario, los datos vienen de esa misma hoja que aparece en la imagen.

Espero hayan entendido mi inquietud de solventar este tema interesante.

2 Respuestas

Respuesta
1

Tus combos tienen 3 columnas. Del modo en que estás realizando la búsqueda debe ser por la primera col, o sea A y no B. Además los textbox deben convertirse a valores. Si tuviesen decimales utilizá CDBL en lugar de VAL.

Private Sub ButtonGuardar_Click()
Application.ScreenUpdating = False
Set h1 = Workbooks("Libro2.xlsm").Sheets("ARTICULOS")
Set r = h1.Columns("A")
Set b = r.Find(ComboBxCod1, lookat:=xlWhole)
If Not b Is Nothing Then
    'f = b.Address
    h1.Cells(b.Row, "J") = h1.Cells(b.Row, "J") - Val(TextBxCant1)
End If
Workbooks("libro1.xlsm").Activate
Sheets("INICIO-FACTURAR").Select
End Sub

PD) por supuesto que esta no es la mejor manera de registrar items en una factura (que no se tome como ejemplo :) pero para tu caso donde son pocos elementos puede ir. Ahora debes completar la macro para cada combo con datos.

Respuesta
1

[Hola 

Te paso la macro, solo ajusta los nombres de tus controles que usas.

Lo primero que hace es buscar el código del articulo y si encuentra realiza la resta.

   Set h1 = Sheets("Hoja_Artículos")
    '
    codigo_Art = TextBox1
    '
    Set r = h1.Columns("B") ' busca cod_artículo
    Set b = r.Find(codigo_Art, lookat:=xlWhole)
        If Not b Is Nothing Then
            f = b.Address
            h1.Cells(b.Row, "J") = h1.Cells(b.Row, "J") - TextBox_cant_art
        End If

si tienes dificultades envíame tu data a [email protected] de caso contrario valora la respuesta para finalizar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas