Inventarios en Excel Parte 1.2 – Alta de productos y stock o existencias
PREVIO: INVENTARIOS EN EXCEL PARTE 1.1
En esta segunda parte de la primera entrega de nuestro Proyecto Inventarios en Excel usaremos el mismo formulario que vimos en la Parte 1.1. El Formulario desarrollado con macros VBA nos da la oportunidad de agregar existencias a productos existentes, pero también nos da la opción de dar de alta el producto que estemos buscando en caso de que no exista en la tabla Productos.
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.2
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Formulario para entrada de productos y su stock o existencia
El mismo formulario que nos sirve para buscar códigos de productos y aumentarle su stock, nos servirá para buscar códigos y en caso de que el código no exista nos dará la opción de registrarlo.
Figura 2. Si el producto no existe nos da la opción de darlo de alta.
Al dar de alta un nuevo producto le daremos de alta los conceptos de DESCRIPCIÓN, PRECIO UNITARIO, CANTIDAD.
Figura 3. Damos de alta un nuevo producto, así como su stock o existencia.
Código VBA del 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
Descargar 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.