Está en la página 1de 21

Microsoft Excel 2013

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á:

La actualización de los productos al conocer el código.


Facturar a los clientes registrados.
Guardar el monto facturado en la base de resumen facturación
Limpiar la factura.

Se cuenta con las hojas:

FACTURA
productos
CLIENTES
resumen factura

Para resolver esta aplicación se requiere:

Aplicar validación de listas con definición de nombres en la celda B14.

Página 3
Macros - Caso Práctico

Definir la lista de nombres en la hoja productos.

2.-Selecciona
Fórmulas

3.-Haz clic en
1.-Selecciona toda
Administrador de
la columna A.
nombres

5.-Haz clic en 4.-Se visualiza


Nuevo… Administrador de
nombres

Se visualiza el cuadro de diálogo:

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

Aplicar la validación a la celda B14.


Selecciona la celda B14.

Ir a la ficha Datos.

Haz clic en Validación de datos

Visualiza el cuadro de diálogo Validación de datos

En Permitir: selecciona Lista

En Origen digita =item

Haz clic en Aceptar

Arrastrar la validación de B14 a B23.

Página 5
Macros - Caso Práctico

2.-Selecciona 3.- Haz clic en


Datos Validación de
datos

1.-Selecciona la 4.- Visualiza el


celda B14 cuadro de diálogo
Validación de
5.- Selecciona
datos
Lista

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.

En esta macro se graba el proceso de aplicar la función anidada:

=SI.ERROR(BUSCARV(B14;productos!$1:$1048576;2;0);" ")

Recuerda fijar la matriz productos!$1:$1048576, para eso presiona F4.

Revisa el proceso:

Página 6
Macros - Caso Práctico

1.-Selecciona la ficha
2.-Haz clic en Grabar Programador
macro

Observa se activa el cuadro de diálogo Grabar 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

En el cuadro de diálogo Argumentos de función selecciona los argumentos de la función


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

Se visualiza, el cuadro de diálogo de Argumentos de la función 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

Visualiza el funcionamiento de la macro:

22.-Visualiza el
resultado
obtenido

El código de la macro buscar_descripcion es:

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);" ")

Recuerda fijar la matriz productos!$1:$1048576, para eso presiona F4.

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

La macro se llamará calcular_valor

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.

La macro generará el siguiente código:

Limpiar_factura contiene:
Sub limpiar_factura()
'
' limpiar_factura Macro
Range("B14:F23").Select
Selection.ClearContents
Range("B14").Select
End Sub

Asignación de Controles de formulario a una Macro


Ahora, para optimizar nuestra aplicación, a las macros creadas se les asignarán a botones.

Primero lo realizarás con limpiar_factura.

1.-Haz clic en
2.-Haz clic Programador
en Insertar
3.-Selecciona
el Botón

Página 14
Macros - Caso Práctico

Dibuja el objeto botón en un área de tu hoja de cálculo.

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.

La aplicación luce así:

Observa el botón limpiará la factura con tan solo hacer clic sobre el.

Página 15
Macros - Caso Práctico

Asignación de Controles ActiveX a una Macro


Ahora, requieres un botón que te permita actualizar los datos; que llame y ejecute las macros:

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

Dibujar el objeto en un área de la hoja de cálculo.

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

Dar doble clic en el botón creado

10.-Haz doble clic en


el objeto creado.

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

Call permite llamar a cada una de las macros en el orden indicado.

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

14.-Haz clic para


desactivar el Modo
Diseño. Cuando
está en color
naranja este está
activo.

Visualiza la pantalla de Excel, desactivado el Modo Diseño.

15.- Modo Diseño


está desactivado.

16.-Actualizar
datos, listo para
hacer clic.

Página 19
Macros - Caso Práctico

17.-Visualiza su
funcionamiento.

Asignar Macros a botones


Colocar un botón de formularios para asignar la macro que copia los datos desde FACTURA a
resumen factura.

2.-Selecciona la
macro.

1.-Dibuja el botón.

3.-Haz clic en
Aceptar.

Página 20
Macros - Caso Práctico

La aplicación final luce así:

Página 21

También podría gustarte