III. Inter-Cycle Correlation
3.4. Study on BEAVRS
PROCEDIMIENTO:
NOTA: Los nombres de la primera celda de cada hoja: INICIO_ALMACEN. INICIO_VENTAS, INICIO_FACTURAS, INICIO_DERECHOS e INICIO_MENU deberán definirse antes de grabar cada una de las macros.
Los códigos de las macros asignadas a cada botón del menú son los siguientes Sub A_ALMACEN()
' Macro para trasladarse a la hoja ALMACEN Application.Goto Reference:="INICIO_ALMACEN" End Sub
Sub A_VENTAS()
' Macro para trasladarse a la hoja VENTAS Application.Goto Reference:="INICIO_VENTAS" End Sub
Sub A_FACTURAS()
' Macro para trasladarse a la hoja FACTURAS Application.Goto Reference:="INICIO_FACTURAS" End Sub
Sub A_DERECHOS()
' Macro para trasladarse a la hoja DERECHOS Application.Goto Reference:="INICIO_DERECHOS" End Sub
Sub A_MENU()
' Macro para trasladarse a la hoja MENU Application.Goto Reference:="INICIO_MENU" End Sub
HOJA ALMACEN:
Debe definirse previamente un nombre (“PRODUCTOS”) para el rango que contendrá la lista de datos de almacén. Se sugiere establecer un rango para ingresar por lo menos 500 productos (A2:D503)
1. MACRO PARA AGREGAR NUEVOS PRODUCTOS:
Nombre de macro: NUEVO
PROCEDIMIENTO:
Se debe definir antes un nombre (“PRODUCTO_NUEVO”) para el área de productos adquiridos: (G5:G8) El código de la macro que agrega nuevos productos al almacén ya modificado queda de la forma siguiente:
Sub NUEVO()
' NUEVO - Macro que permite agregar nuevos productos al almacén. Application.Goto Reference:="INICIO_ALMACEN"
RESP = vbYes
Do WhileRESP = vbYes
Application.Goto Reference:="R5C7" CLAVE = InputBox("ESCRIBE LA CLAVE") ActiveCell.FormulaR1C1 = CLAVE
ActiveCell.Offset(1, 0).Range("A1").Select
PRODUCTO = InputBox("ESCRIBE NOMBRE DE PRODUCTO") ActiveCell.FormulaR1C1 = PRODUCTO
ActiveCell.Offset(1, 0).Range("A1").Select
PRECIO = InputBox("ESCRIBE PRECIO DEL PRODUCTO") ActiveCell.FormulaR1C1 = PRECIO
ActiveCell.Offset(1, 0).Range("A1").Select
CANT = InputBox("TECLEA LA CANTIDAD COMPRADA") ActiveCell.FormulaR1C1 = CANT Application.Goto Reference:="PRODUCTO_NUEVO" Selection.Copy Application.Goto Reference:="R1C1" Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True Application.CutCopyMode = False
RESP = MsgBox("¿DESEAS CAPTURAR OTRO PRODUCTO?", vbYesNo)
Loop
Application.Goto Reference:="R1C1" End Sub
2. MACRO PARA ACTUALIZAR EXISTENCIAS EN ALMACEN (NUEVAS COMPRAS)
NOTA: Antes de proceder al grabado de la macro colocar funciones de búsqueda en G11, G12 y G13 que permitan consultar desde la base de datos el nombre, precio y existencia del producto que corresponde a la clave dada:
=BUSCARV(G10,PRODUCTOS,2,FALSO) =BUSCARV(G10,PRODUCTOS,3,FALSO) =BUSCARV(G10,PRODUCTOS,4,FALSO)
El código ya modificado de la macro que actualiza existencias en almacén queda de la forma siguiente: Sub ACTUALIZAR()
' Macro que actualiza existencias en Almacen
Application.Goto Reference:="INICIO_ALMACEN"
RESPUESTA = vbYes
Do WhileRESPUESTA = vbYes RESPUESTA2 = vbNo
Do While RESPUESTA2 = vbNo
Application.Goto Reference:="R10C7"
CLAVE = InputBox("FAVOR DE TECLEAR LA CLAVE") ActiveCell.FormulaR1C1 = CLAVE
Application.Goto Reference:="R14C7"
COMPRA = InputBox("FAVOR DE TECLEAR CANTIDAD COMPRADA") ActiveCell.FormulaR1C1 = COMPRA
RESPUESTA2 = MsgBox("¿EL DATO ES CORRECTO?", vbYesNo)
Loop
Selection.Copy
Application.Goto Reference:="R1C1"
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _ :=False, Transpose:=False
Application.CutCopyMode = False Application.Goto Reference:="R14C7" Selection.ClearContents
MsgBox "¡EL PRODUCTO SE HA ACTUALIZADO!", vbOKOnly
RESPUESTA = MsgBox("¿DESEA ACTUALIZAR OTRO PRODUCTO?", vbYesNo)
Loop
Application.Goto Reference:="R1C1" End Sub
3.- MACRO PARA BUSQUEDA DE PRODUCTOS EN ALMACEN:
NOTA: Este procedimiento permite hacer una búsqueda de un producto utilizando la clave o el nombre del mismo. La clave y nombre se deberá pedir a través de un Input Box. Colocar antes en G17, G18 Y G19 fórmulas para la búsqueda del NOMBRE, PRECIO y EXISTENCIA del producto que corresponde a la clave o nombre dados:
=BUSCARV(G16,PRODUCTOS,2,FALSO) =BUSCARV(G16,PRODUCTOS,3,FALSO) =BUSCARV(G16,PRODUCTOS,4,FALSO)
El código ya modificado de la macro para búsquedas en almacén queda de la forma siguiente: Sub BUSQUEDA()
' Macro para realizar BUSQUEDAS en almacén. Application.Goto Reference:="INICIO_ALMACEN"
CLAVE = InputBox("ESCRIBA LA CLAVE O NOMBRE DEL PRODUCTO BUSCADO") Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate
Selection.End(xlToLeft).Select Selection.Copy
Application.Goto Reference:="R16C7"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Application.CutCopyMode = False Application.Goto Reference:="R1C1" End Sub
HOJA VENTAS:
PROCEDIMIENTO:
A.) Antes de iniciar asegurarse que ya existe un nombre (“PRODUCTOS”) para el rango de la lista de productos que se encuentran en almacén. Si no es así deberá crearlo.
B.) Crear fórmulas de búsqueda en B4, B5 y B7 para saber el nombre del producto, precio y existencia: PROCEDIMIENTO PARA HACER LA BUSQUEDA:
Colocarse en la celda donde se va a colocar el Nombre del producto. Crear las formulas de búsqueda:
=BUSCARV(B3,PRODUCTOS,2,FALSO) Para el Producto
=BUSCARV(B3,PRODUCTOS,3,FALSO) Para el Precio
=BUSCARV(B3,PRODUCTOS,4,FALSO) Para la Existencia
El código Visual ya modificado de la macro para la hoja VENTAS queda de la forma siguiente: Sub VENTA()
' Macro para realizar una VENTA
Application.Goto Reference:="INICIO_VENTAS" RESP = vbYes
Do WhileRESP = vbYes
Application.Goto Reference:="R3C2"
CLAVE = InputBox("TECLEA LA CLAVE DEL PRODUCTO") ActiveCell.FormulaR1C1 = CLAVE
CORRECTA = vbNo
Do While CORRECTA = vbNo
Application.Goto Reference:="R6C2"
CANT = InputBox("TECLEA LA CANTIDAD SOLICITADA") ActiveCell.FormulaR1C1 = CANT
CORRECTA = MsgBox("¿LA CANTIDAD ES CORRECTA?", vbYesNo)
Loop
AUTORIZA = MsgBox("¿EL CLIENTE ACEPTA LA COMPRA?", vbYesNo) If AUTORIZA = vbNo Then
Application.Goto Reference:="INICIO_VENTAS" End
Else
Selection.Copy
Application.Goto Reference:="INICIO_ALMACEN"
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlSubtract, _ SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="INICIO_VENTAS" End If
RESP = MsgBox("¿DESEAS REGISTRAR OTRA VENTA?", vbYesNo)
Loop
Application.Goto Reference:="INICIO_VENTAS" End Sub
HOJA FACTURAS:
PROCEDIMIENTO:
PRODUCTOS (Hoja Almacén A2:D503), ARTS_VENDIDOS (A9:G19); y CLIENTE (B4:B5) son nombres de rango que tiene que definir con anterioridad. Además deberá poner un 1 en la celda F1 para inicializar el contador del consecutivo. El código Visual ya modificado de la macro FACTURAR queda de la forma siguiente:
Sub FACTURAR()
' Macro para llenar una FACTURA
Application.Goto Reference:="INICIO_FACTURAS" Application.Goto Reference:="R1C6"
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _ :=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="ARTS_VENDIDOS" Selection.ClearContents
CORRECTO = vbNo
Do WhileCORRECTO = vbNo
Application.Goto Reference:="CLIENTE" Selection.ClearContents
Application.Goto Reference:="R4C2"
NOMBRE = InputBox("INTRODUCE NOMBRE DEL CLIENTE") ActiveCell.FormulaR1C1 = NOMBRE
ActiveCell.Offset(1, 0).Range("A1").Select
DIRECCION = InputBox("INTRODUCE DIRECCION DEL CLIENTE") ActiveCell.FormulaR1C1 = DIRECCION
CORRECTO = MsgBox("LOS DATOS DEL CLIENTE ¿SON CORRECTOS?", vbYesNo)
Loop
RESPUESTA = vbYes Do While RESPUESTA = vbYes
Application.Goto Reference:="R7C1" Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
CLAVE = InputBox("INTRODUCE LA CLAVE DEL PRODUCTO A VENDER") ActiveCell.FormulaR1C1 = CLAVE ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],PRODUCTOS,2,FALSE)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],PRODUCTOS,3,FALSE)" ActiveCell.Offset(0, 1).Range("A1").Select
CANTIDAD = InputBox("INTRODUCE LA CANTIDAD A VENDER") ActiveCell.FormulaR1C1 = CANTIDAD
Selection.Copy
Application.Goto Reference:="INICIO_ALMACEN"
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlSubtract, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Application.Goto Reference:="INICIO_FACTURAS" Application.Goto Reference:="R7C1" Selection.End(xlDown).Select ActiveCell.Offset(0, 4).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-1]*15%" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Loop
Application.Goto Reference:="R20C7" Selection.Copy
Application.Goto Reference:="R2C9"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _ :=False, Transpose:=False
Application.CutCopyMode = False Application.Goto Reference:="R1C1" End Sub
C
Coommeennttaarriiooss
Deseamos que el presente material de apoyo le haya facilitado el aprendizaje de los temas que componen cada módulo de este evento y que le sea útil para futuras consultas.
Le felicitamos por haber concluido este curso de capacitación, continúe practicando; recuerde que su habilidad dependerá del manejo cotidiano de esta paquetería.
Le invitamos a tomar el curso de Excel 2003 Intermedio, en el cual conocerá el uso de las Tablas Dinámicas, Escenarios, Esquemas, Funciones de Bases de Datos, Solver, Buscar Objetivos, etc., dichas herramientas le ayudarán a realizar mejor sus funciones laborales y personales, con Excel 2003 Avanzado, aprenderás a crear y aplicar las macros de Excel, con esta herramienta podrás automatizar todos tus procesos de una manera eficaz, atrévete a entrar al mundo maravilloso de la aplicación de las matemáticas en una hoja de cálculo.
La perseverancia nos lleva al ÉXITO ¡ C a p a c í t a t e !
Bibliografía:
La BIBLIA de Microsoft Office 2003 Ed Bott
Woody Leonhard
Editorial Anaya Multimedia País España
1084 Páginas 2005
Edición Especial Microsoft Office XP ED BOTT y WOODY LEONHARD Editorial Prentice Hall
País España 1344 Páginas 2004
Microsoft Excel 2003 Paso a Paso C. Nossiter Joshua
Editorial Prentice Hall País México
426 Páginas 2004
Excel 2003 Super Book McFedries Paul
Editorial SAMS Publishing País EEUU
1772 Páginas 2004
Obra literaria propiedad del: Centro Nacional de Capacitación y Calidad IMSS-SNTSS Elaborado por: Eliseo Robles Hernández