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

Post on 18-Apr-2020

6 views 0 download

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

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.

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

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.

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

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

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

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

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

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

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

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

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.

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

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

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.

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

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.

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

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.

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.

Ms Excel Avanzado

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

La aplicación final luce así: