Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Macros
Caso Práctico
Macros - Caso Práctico
Contenido
Definir la lista de nombres en la hoja productos. ......................................................................... 4
Aplicar la validación a la celda B14. .............................................................................................. 5
Grabar macros ............................................................................................................................... 6
Macro buscar_descripcion ............................................................................................................ 6
Macro buscar_valor .................................................................................................................... 12
Macro llenar_formula ................................................................................................................ 12
Macro calcular_valor ................................................................................................................... 12
Macro copiar_datos. ................................................................................................................... 13
Macro Limpiar_factura ............................................................................................................... 14
Asignación de Controles de formulario a una Macro ................................................................. 14
Asignación de Controles ActiveX a una Macro............................................................................ 16
Asignar Macros a botones ........................................................................................................... 20
Página 2
Macros - Caso Práctico
CASO DE ESTUDIO
La aplicación permitirá:
FACTURA
productos
CLIENTES
resumen factura
Página 3
Macros - Caso Práctico
2.-Selecciona
Fórmulas
3.-Haz clic en
1.-Selecciona toda
Administrador de
la columna A.
nombres
6.-En Nombre:
digita un nombre
por ejemplo, item
7.-Verifica el
rango de la lista.
8.-Haz clic en
Aceptar
Página 4
Macros - Caso Práctico
9.-Se ha definido
el nombre item
10.-Haz clic en
Cerrar
Ir a la ficha Datos.
Página 5
Macros - Caso Práctico
6.- Digita
=item
7.- Haz clic en
Aceptar
Grabar macros
Para dar solución grabaremos las macros:
buscar_descripcion
buscar_valor
llenar_formula
calcular_valor
Macro buscar_descripcion
Esta macro grabará el proceso de aplicar la función anidada con SI.ERROR y BUSCARB de tal
forma que si existe en la base el ítem, busque el ítem en la base de datos productos y que
devuelva el nombre del producto, caso contrario que deje en blanco.
=SI.ERROR(BUSCARV(B14;productos!$1:$1048576;2;0);" ")
Revisa el proceso:
Página 6
Macros - Caso Práctico
1.-Selecciona la ficha
2.-Haz clic en Grabar Programador
macro
3.-Digita un nombre
para la macro
4.-Haz clic en
Aceptar
Página 7
Macros - Caso Práctico
5.-Haz clic en
fx
6.-Se visualiza
Insertar
función
7.-Selecciona
SI.ERROR
8.-Haz clic en
Aceptar
Se visualiza:
9.-Ubica el
cursor
Página 8
Macros - Caso Práctico
11.-Visualiza el
código en la barra de
fórmulas
10.-Haz clic en
12.-Visualiza Los
la lista y
Argumentos de
selecciona
función de
BUSCARV
BUSCARV
13.-Selecciona
el dato a
buscar. 14.-Selecciona la matriz
en la que se encuentra el
dato a buscar. Fija la
matriz al presionar F4.
15.-Digita el
indicador de
columna.
16.-Digita 0.
17.-Haz clic en
Aceptar
Página 9
Macros - Caso Práctico
18.-Haz clic en
SI.ERROR
19.-Digita: “ “ para
que deje en
blanco.
20.-Haz clic en
Aceptar
Página 10
Macros - Caso Práctico
21.-Haz clic en
Detener
grabación
22.-Visualiza el
resultado
obtenido
Página 11
Macros - Caso Práctico
Sub buscar_descripcion()
'
' buscar_descripcion Macro
'
Range("C14").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-1],productos!R1:R1048576,2,0),"" "")"
End Sub
Macro buscar_valor
Con el mismo criterio, vas a crear una macro que devuelva el valor unitario del ítem
seleccionado en B14 la macro se llamará buscar_valor. En esta macro se graba el proceso de
aplicar la función anidada:
=SI.ERROR(BUSCARV(B14;productos!$1:$1048576;3;0);" ")
Sub buscar_valor()
'
' buscar_valor Macro
'
Range("E14").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-3],productos!R1:R1048576,3,0),"" "")"
End Sub
Macro llenar_formula
Para rellenar las fórmulas de las celdas C14 y E14, crea una macro que permita arrastrar las
fórmulas de las celdas C14 y E14, a la macro la llamaré llenar_formula.
Sub llenar_formula()
'
' llenar_formula Macro
' Range("C14").Select
Selection.AutoFill Destination:=Range("C14:C23"), Type:=xlFillDefault
Range("C14:C23").Select
Range("E14").Select
Selection.AutoFill Destination:=Range("E14:E23"), Type:=xlFillDefault
Range("E14:E23").Select
Range("B14").Select
End Sub
Macro calcular_valor
Para mejorar la aplicación, te sugiero realizar una macro que calcule el valor de la cantidad por
el valor. Y que arrastre la fórmula. Para esto se grabará una macro que aplicarás la función
=SI.ERROR(D14*E14;0) Luego se grabará también el arrastre de la fórmula.
Página 12
Macros - Caso Práctico
Sub calcular_valor()
'
' calcular_valor Macro
' Range("F14").Select
ActiveCell.FormulaR1C1 = "=IFERROR(RC[-2]*RC[-1],0)"
Selection.AutoFill Destination:=Range("F14:F23"), Type:=xlFillDefault
Range("F14:F23").Select
End Sub
Macro copiar_datos.
Ahora, se creará una macro que copie el RUC, el nombre del cliente y el valor facturado a la
base resumen factura. Para esto copia y pega cada dato como pegado especial opción valores,
pues las celdas a copiar contienen fórmulas. La macro se llamará copiar_datos.
Sub copiar_datos()
' copiar_datos Macro
Range("C9").Select
Selection.Copy
Sheets("resumen factura").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("FACTURA").Select
Range("C8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("resumen factura").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("FACTURA").Select
Range("F27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("resumen factura").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A3:C3").Select
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Rows("3:3").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A3").Select
Sheets("FACTURA").Select
Página 13
Macros - Caso Práctico
Range("B14").Select
End Sub
Macro Limpiar_factura
Finalmente, se creará una macro que limpie el contenido de la factura. Para crear esta macro.
Activa la grabadora de macros, ingresa el nombre de Limpiar_factura graba el proceso en el
que seleccionas el rango a borrar, para el ejemplo seleccionarás el rango de B14 a F23. Luego
presiona la tecla suprimir. Para finalizar detén la macro.
Limpiar_factura contiene:
Sub limpiar_factura()
'
' limpiar_factura Macro
Range("B14:F23").Select
Selection.ClearContents
Range("B14").Select
End Sub
1.-Haz clic en
2.-Haz clic Programador
en Insertar
3.-Selecciona
el Botón
Página 14
Macros - Caso Práctico
5.-Visualiza el
cuadro de
diálogo
6.-Selecciona la Asignar macro.
4.-Dibuja el
macro
objeto en un
Limpiar_factura
área de la hoja
de cálculo
6.-Haz clic en
Aceptar.
Observa el botón limpiará la factura con tan solo hacer clic sobre el.
Página 15
Macros - Caso Práctico
buscar_descripcion
buscar_valor
llenar_formula
calcular_valor
Para esto aplicarás un botón de tipo control ActiveX, pues este permitirá llamar a cada macro
en el orden indicado con la estructura call.
1.-Haz clic en
2.-Haz clic Programador
en Insertar
3.-Selecciona
el Botón de
comando
Página 16
Macros - Caso Práctico
6.-Haz clic en
Propiedades.
5.-Se activa
Modo Diseño.
7.-Visualiza el
cuadro de
diálogo
Propiedades.
4.-Dibuja el
objeto en un
8.-En Name
área de la hoja
9.-En Caption digita un
de cálculo.
digita Actualizar nombre
Selecciona el
datos btnactualizar
objeto
Se visualiza:
Página 17
Macros - Caso Práctico
11.-Visualiza el
ambiente de VBA.
En donde puedes
programar
Digitar el código:
Call buscar_descripcion
Call buscar_valor
Call llenar_formula
Call calcular_valor
Se visualiza:
13.-Haz clic para
regresar al
ambiente de Excel
12.-Visualiza el
código digitado para
el botón Actualizar
datos.
Para que funcione este tipo de botón, debes desactivar el ambiente de diseño.
Página 18
Macros - Caso Práctico
16.-Actualizar
datos, listo para
hacer clic.
Página 19
Macros - Caso Práctico
17.-Visualiza su
funcionamiento.
2.-Selecciona la
macro.
1.-Dibuja el botón.
3.-Haz clic en
Aceptar.
Página 20
Macros - Caso Práctico
Página 21