caso de aplicación€¦ · ms excel avanzado ing. patricia acosta vargas, msc. página 3 caso de...
Post on 25-Sep-2020
8 Views
Preview:
TRANSCRIPT
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í:
top related