Inventarios en Excel Parte 1.1 – Modificación de productos y aumentar el stock o existencias
En este tutorial veremos un nuevo proyecto llamado Inventarios en Excel. Veremos un formulario que nos permitirá modificar las cantidades en existencia de los productos registrados. Si el producto existe vamos a aumentarle la existencia. De manera opcional vamos a poder modificar la descripción de los productos y el precio unitario a cada producto.
Tabla de productos
Tenemos una tabla donde tendremos los datos de CÓDIGO, DESCRIPCIÓN, PRECIO UNITARIO Y CANTIDAD o EXISTENCIA.
Figura 1. Tabla de productos en nuestro inventario.
Ver video Inventarios en Excel Parte 1.1
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Formulario para modificar la existencia de los productos
Tenemos un formulario desarrollado en Excel VBA donde tendremos un cuadro de texto donde ingresaremos el código a buscar. En caso de que el código exista, se mostrarán los datos de DESCRIPCIÓN y PRECIO UNITARIO. En el cuadro de texto CANTIDAD el número que ingresemos se sumará a la cantidad que haya en existencia.
Figura 2. Aumentamos el stock de los productos del inventario.
Código VBA de formulario (macros)
El siguiente código VBA son las instrucciones VBA que van en el formulario.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Public DatoEncontrado Public varOpcion '1 para modificar, 2 para alta 'AL INICIAR EL FORMULARIO Private Sub UserForm_Initialize() Call DeshabilitarCajasTexto Me.lblAviso.Font.Size = 11 End Sub 'BUSCAR CÓDIGOS Private Sub CommandButton2_Click() On Error GoTo ManejadorErrores If Me.txtCodigo.Value = "" Then MsgBox "Ingrese un código", vbExclamation, "EXCELeINFO": Exit Sub Set Rango = Sheets("Inventario").Range("A1").CurrentRegion FilasRango = Rango.Rows.Count Set ColumnaBusqueda = Sheets("Inventario").Range("A2:A" & FilasRango) DatoEncontrado = ColumnaBusqueda.Find(What:=Me.txtCodigo.Value, MatchCase:=False, LookAt:=xlWhole).Address Call HabilitarCajasTexto Me.txtDescripcion.Value = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 1).Value Me.txtPrecio.Value = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 2).Value Me.txtCantidad.SetFocus Me.lblAviso.Caption = "Modificar código " & Me.txtCodigo varOpcion = 1 Exit Sub ManejadorErrores: If Err.Number = 91 Then MensajeAlta = MsgBox("El código " & Me.txtCodigo.Value & " no se encuentra. Desea darlo de alta?", vbYesNo + vbQuestion, "EXCELeINFO") If MensajeAlta = vbYes Then Call HabilitarCajasTexto Me.txtDescripcion.SetFocus Me.lblAviso.Caption = "Alta de código " & Me.txtCodigo varOpcion = 2 Else Me.txtCodigo.SetFocus End If Else MsgBox "Otro error" End If End Sub 'MODIFICAR O GUARDAR Private Sub btnAceptar_Click() If varOpcion = 1 Then With Sheets("Inventario") .Range(DatoEncontrado).Offset(0, 1).Value = Me.txtDescripcion.Value .Range(DatoEncontrado).Offset(0, 2).Value = Me.txtPrecio.Value .Range(DatoEncontrado).Offset(0, 3).Value = _ Val(.Range(DatoEncontrado).Offset(0, 3).Value) + Val(Me.txtCantidad.Value) End With ElseIf varOpcion = 2 Then Set Rango = Sheets("Inventario").Range("A1").CurrentRegion NuevaFila = Rango.Rows.Count + 1 With Sheets("Inventario") .Cells(NuevaFila, 1).Value = Val(Me.txtCodigo) .Cells(NuevaFila, 2).Value = Me.txtDescripcion .Cells(NuevaFila, 3).Value = Val(Me.txtPrecio) .Cells(NuevaFila, 4).Value = Val(Me.txtCantidad) End With End If Unload Me End Sub
Y el siguiente código VBA va en un Módulo normal y servirá para habilitar o deshabilitar los cuadros de texto para actualizar los datos de cada producto.
Sub HabilitarCajasTexto() Set FormActivo = UserForms(0) With FormActivo .txtDescripcion.Enabled = True .txtDescripcion.BackStyle = fmBackStyleOpaque .txtPrecio.Enabled = True .txtPrecio.BackStyle = fmBackStyleOpaque .txtCantidad.Enabled = True .txtCantidad.BackStyle = fmBackStyleOpaque End With End Sub Sub DeshabilitarCajasTexto() Set FormActivo = UserForms(0) With FormActivo .txtDescripcion.Enabled = False .txtDescripcion.BackStyle = fmBackStyleTransparent .txtPrecio.Enabled = False .txtPrecio.BackStyle = fmBackStyleTransparent .txtCantidad.Enabled = False .txtCantidad.BackStyle = fmBackStyleTransparent End With End Sub
Descarga el archivo de ejemplo
Inventarios en Excel Parte 1 – Formulario de alta y modificación de productos – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.