Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de...

21
Caso de aplicación Facturación a clientes en MS Excel, con macros Aplicación que permite facturar, actualizar datos, resumir datos. Ing. Patricia Acosta Vargas, MSc.

Transcript of Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de...

Page 1: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Caso de aplicación Facturación a clientes en MS Excel, con macros Aplicación que permite facturar, actualizar datos, resumir datos. Ing. Patricia Acosta Vargas, MSc.

Page 2: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 2

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

Page 3: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 3

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.

Page 4: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 4

Definir la lista de nombres en la hoja productos.

Se visualiza el cuadro de diálogo:

2.-Selecciona

Fórmulas

3.-Haz clic en

Administrador de

nombres

4.-Se visualiza

Administrador de

nombres

1.-Selecciona toda

la columna A.

5.-Haz clic en

Nuevo…

6.-En Nombre:

digita un nombre

por ejemplo, item

7.-Verifica el

rango de la lista.

8.-Haz clic en

Aceptar

Page 5: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 5

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.

9.-Se ha definido

el nombre item

10.-Haz clic en

Cerrar

Page 6: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 6

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:

1.-Selecciona la

celda B14

2.-Selecciona

Datos

3.- Haz clic en

Validación de

datos

4.- Visualiza el

cuadro de diálogo

Validación de

datos 5.- Selecciona

Lista

6.- Digita

=item

7.- Haz clic en

Aceptar

Page 7: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 7

Observa se activa el cuadro de diálogo Grabar macro.

1.-Selecciona la ficha

Programador 2.-Haz clic en Grabar

macro

3.-Digita un nombre

para la macro

4.-Haz clic en

Aceptar

Page 8: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 8

Se visualiza:

5.-Haz clic en

fx

6.-Se visualiza

Insertar

función

7.-Selecciona

SI.ERROR

8.-Haz clic en

Aceptar

9.-Ubica el

cursor

Page 9: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 9

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

BUSCARV.

10.-Haz clic en

la lista y

selecciona

BUSCARV

11.-Visualiza el

código en la barra de

fórmulas

12.-Visualiza Los

Argumentos de

función de

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

Page 10: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 10

Se visualiza, el cuadro de diálogo de Argumentos de la función SI.ERROR

18.-Haz clic en

SI.ERROR

19.-Digita: “ “ para

que deje en

blanco.

20.-Haz clic en

Aceptar

Page 11: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 11

Visualiza el funcionamiento de la macro:

El código de la macro buscar_descripcion es:

21.-Haz clic en

Detener

grabación

22.-Visualiza el

resultado

obtenido

Page 12: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 12

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.

Page 13: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 13

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

Page 14: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 14

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

Programador 2.-Haz clic

en Insertar

3.-Selecciona

el Botón

Page 15: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 15

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

La aplicación luce así:

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

4.-Dibuja el

objeto en un

área de la hoja

de cálculo

6.-Selecciona la

macro

Limpiar_factura

5.-Visualiza el

cuadro de

diálogo

Asignar macro.

6.-Haz clic en

Aceptar.

Page 16: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 16

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.

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

1.-Haz clic en

Programador 2.-Haz clic

en Insertar

3.-Selecciona

el Botón de

comando

Page 17: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 17

Dar doble clic en el botón creado

Se visualiza:

4.-Dibuja el

objeto en un

área de la hoja

de cálculo.

Selecciona el

objeto

8.-En Name

digita un

nombre

btnactualizar

6.-Haz clic en

Propiedades.

5.-Se activa

Modo Diseño.

7.-Visualiza el

cuadro de

diálogo

Propiedades.

9.-En Caption

digita Actualizar

datos

10.-Haz doble clic en

el objeto creado.

Page 18: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 18

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:

Para que funcione este tipo de botón, debes desactivar el ambiente de diseño.

11.-Visualiza el

ambiente de VBA.

En donde puedes

programar

12.-Visualiza el

código digitado para

el botón Actualizar

datos.

13.-Haz clic para

regresar al

ambiente de Excel

Page 19: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 19

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

14.-Haz clic para

desactivar el Modo

Diseño. Cuando

está en color

naranja este está

activo.

15.- Modo Diseño

está desactivado.

16.-Actualizar

datos, listo para

hacer clic.

Page 20: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 20

Asignar Macros a botones Colocar un botón de formularios para asignar la macro que copia los datos desde FACTURA a

resumen factura.

17.-Visualiza su

funcionamiento.

1.-Dibuja el botón.

2.-Selecciona la

macro.

3.-Haz clic en

Aceptar.

Page 21: Caso de aplicaciónsaccec.com/conferencias/macros_factura.pdfDibuja el objeto botón en un área de tu hoja de cálculo. La aplicación luce así: Observa el botón limpiará la factura

Ms Excel Avanzado

Ing. Patricia Acosta Vargas, MSc. Página 21

La aplicación final luce así: