You are on page 1of 62

Coordinación

de
Informática

Automatización
de Hojas de
Cálculo en Excel

Manual del
Participante
AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL PRESENTACION

Índice:
Presentación ..................................................................................................................................... 5

“Automatización de Hojas de Cálculo en Excel” ............................................................................ 7

Módulo I Funciones de Usuario ....................................................................................................... 9

INTRODUCCIÓN ............................................................................................................................................11
1.1 CREACIÓN DE FUNCIONES ...................................................................................................................11
1.2 SINTAXIS DE UNA FUNCIÓN. ................................................................................................................11
1.3 COMO EJECUTAR UNA FUNCION .........................................................................................................11
1.4 COMO ELIMINAR UNA FUNCION ...........................................................................................................11
1.5 PROGRAMACION ESTRUCTURADA. ...................................................................................................11
1.6 ESTRUCTURAS SECUENCIALES .........................................................................................................12
1.7 ESTRUCTURAS SELECTIVAS. ...............................................................................................................12
1.8 ESTRUCTURAS REPETITIVAS ..............................................................................................................14

Módulo II Macros ............................................................................................................................. 15

INTRODUCCIÓN ............................................................................................................................................17
2.1 MACROS ..................................................................................................................................................17
2.2 TIPOS DE MACROS ................................................................................................................................17
2.3 EL CÓDIGO DE LA MACRO ....................................................................................................................18
2.4 USO DE BOTONES PARA FACILITAR LA EJECUCIÓN DE MACROS .................................................18
2.5 ASIGNAR MACRO A UN OBJETO GRAFICO ...............................................................................................19
2.6 MODIFICAR UNA MACRO .......................................................................................................................19
2.7 INSTRUCCIONES VISUAL BASIC PARA MODIFICACION DE MACROS .............................................19

Módulo III Aplicación de Macros .................................................................................................... 23

INTRODUCCIÓN ............................................................................................................................................25
3.1 HOJA MENU PRINCIPAL .........................................................................................................................25
3.2 HOJA ALMACEN ......................................................................................................................................26
3.3 HOJA VENTAS .........................................................................................................................................27
3.4 HOJA FACTURAS ....................................................................................................................................28
3.5 HOJA DERECHOS ...................................................................................................................................29

Módulo IV Barras y Menús Personalizados................................................................................... 31

INTRODUCCIÓN ............................................................................................................................................33
4.1 CREAR UNA BARRA DE HERRAMIENTAS PERSONALIZADA ...........................................................33
4.2 BOTONES DE MACRO EN BARRAS PERSONALIZADAS ...................................................................33
4.3 CREAR UN MENU PERSONALIZADO ....................................................................................................34
4.4 ELEMENTOS DEL MENÚ PERSONALIZADO ......................................................................................34
4.5 ASIGNAR MACROS A MENÚ PERSONALIZADO ................................................................................35
4.6 SUBMENÚS ..............................................................................................................................................35

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 3


PRESENTACION AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Módulo V Cuadros y Hojas de Diálogo .......................................................................................... 36

INTRODUCCION ............................................................................................................................................38
5.1 CUADROS DE DIÁLOGO.........................................................................................................................38
5.2 APLICACIÓN Y PROGRAMACIÓN DE CONTROLES EN UN CUADRO DE DIÁLOGO:.......................38
5.3 APLICACIÓN DE MACROS EN UNA HOJA DE DIÁLOGO ...................................................................39

Anexos ............................................................................................................................................. 41

ANEXO 1. EJERCICIOS DE EXCEL AVANZADO .........................................................................................43


ANEXO 2. SISTEMA DE MACROS PARA EXCEL AVANZADO ...................................................................53

Comentarios .................................................................................................................................... 61

4 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL PRESENTACION

Presentación
El Instituto Mexicano del Seguro Social conjuntamente con el Sindicato Nacional de Trabajadores del Seguro
Social comprometidos con la superación y actualización del personal, impulsan la Capacitación en materia de
Informática, Humanística, Promocional y de Programas Institucionales que se vinculen a la solución de los
problemas de la operación, favoreciendo el otorgamiento de servicios de calidad.

En este contexto la Coordinación de Informática del Centro Nacional de Capacitación y Calidad, cumple con la
tarea de Diseñar los cursos de capacitación y elaborar los Materiales de Apoyo Didácticos de conformidad con la
NTCL (Norma Técnica de Competencia Laboral) Diseño e Impartición de Cursos de Capacitación para sustentar el
programa de capacitación en Informática que integran el Plan de Trabajo de esta Coordinación y que están
abiertos a todos nuestros compañeros trabajadores basados en la NTCL Elaboración de documentos mediante
herramientas de cómputo.

Así pues, se presenta a continuación el Material de Apoyo Didáctico del Participante “Automatización de Hojas de
Cálculo en Excel”, que ha sido elaborado con base en la Unidad de Competencia “Elaboración de hojas de cálculo
mediante aplicaciones de cómputo” Código UINF0652.01 con información actualizada y el sustento pedagógico y
didáctico para que cumpla con el fin para el cual fue elaborado: guiar y ayudar en el aprendizaje de los
trabajadores, que implica la autosuficiencia en la operación de herramientas para el procesamiento de Hojas de
Cálculo, desde el inicio de la aplicación, el formato a la Hoja, el tratamiento a los datos, la reproducción en
impresora o archivos y el guardado del documento.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 5


PRESENTACION AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Este material de apoyo didáctico para el participante está estructurado en cuatro Módulos.

Módulo I: Funciones de Usuario para Fórmulas complejas: En este módulo usted aprenderá a crear sus
propias funciones de usuario. Una función de usuario sirve para crear fórmulas complejas programadas
en Excel mediante programación Visual Basic y colocarlas dentro del asistente de funciones para su
uso posterior, también aprenderá a llamar a funciones dentro de una función, usando el código de
Visual Basic.

Módulo II: Macros. Una macro es un conjunto de instrucciones a las que se da un nombre y que indica a Excel
una determinada acción a realizar. Este módulo guía al participante en el conocimiento y aplicación de
las macros y cómo se pueden utilizar para incrementar la productividad. También veremos como
grabar, ejecutar, editar y asignar botones de órdenes a las macros creadas.

Módulo III: Aplicación de macros, en este módulo el participante creará una aplicación usando macros, en la
que aplicara todos los conocimientos adquiridos en los cursos anteriores de Excel.

Módulo IV: Barras y Menús Personalizados: Para dar una mejor presentación a sus libros de trabajo, este Módulo
es el adecuado, ya que en él usted aprenderá a crear Barras y Menús personalizados e incluso crear su
propia barra y menú para una aplicación en especial, y así poder evitar que el usuario seleccione otras
opciones ajenas a la aplicación.

Módulo V: Cuadros y Hojas de Diálogo: Después de haber creado y elaborado una serie de macros en sus
Hojas de Cálculo en Excel, necesitara manejar todas sus macros desde una hoja especial de Diálogo,
esta opción nos permite ejecutar macros que utilizan una hoja de Diálogo para una mejor presentación
de sus sistemas en pantalla.

Es recomendable que para un buen aprovechamiento de este curso adquiera el conocimiento previo que le brindan
los cursos “Introducción al uso y Operación de las Microcomputadoras” , “Administración de Recursos con
Windows XP”, “Fundamentos de Programación”, “Formato y Operaciones en Excel” y “Gestión de Datos en
Excel”, con lo que seguirá un proceso continúo de enseñanza-aprendizaje.

Es indispensable la práctica cotidiana de los temas tratados en este material de apoyo didáctico, a fin de que
adquiera un mayor dominio de Excel 2003.

6 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL PRESENTACION

“Automatización de Hojas de Cálculo en Excel”

Objetivo General: Al término del curso el participante diseñará y aplicará macros en Excel mediante
ejercicios de aplicación que automaticen sus hojas de cálculo, optimizando tiempos al
obtener resultados que resuelvan problemas específicos en las tareas encomendadas en
su área de trabajo.

Dirigido: Todo trabajador IMSS-SNTSS, de áreas contables, financieras, estadísticas, actuariales,


etc., que requiera del conocimiento y aplicación de macros para automatizar sus hojas de
cálculo, al desempeñar sus tareas diarias de su área laboral.

Requisitos: Haber acreditado los cursos: “Introducción al uso y operación de las


microcomputadoras”, “Administración de recursos con Windows XP”,
“Fundamentos de Programación”, “Formato y Operaciones en Excel” y “Gestión de
Datos en Excel”.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 7


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO I: FUNCIONES DE USUARIO

Módulo I
Funciones
de
Usuario

Objetivo Específico:
Al finalizar el módulo el participante:

 Conocerá y aplicará el procedimiento para crear Funciones de Usuario.

 Creará funciones de Usuario que necesite en su hoja de cálculo para resolver


problemas específicos.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 9


MÓDULO I: FUNCIONES DE USUARIO AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

10 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO I: FUNCIONES DE USUARIO

INTRODUCCIÓN función. Es decir, sólo hojas del mismo libro pueden


llamar a una función definida por el usuario.
Una función de usuario sirve para crear fórmulas
complejas dentro de Excel y colocarlas dentro del Después de escribir las líneas que componen el código
asistente de funciones para su uso posterior. de la función deberá ejecutarla para comprobar su
funcionamiento. Para hacerlo siga este procedimiento:
En este módulo usted aprenderá a crear sus propias
funciones de usuario. También aprenderá a llamar a  Colóquese en la Hoja donde desea utilizar la función
funciones dentro de una función, usando el código de  Clic en el icono Pegar función
Visual Basic.
 Categoría de la función: Definidas por el usuario
Este contiene además una lista de ejemplos de  Nombre de la función: Seleccione el nombre de
funciones de usuario, que a su vez serán utilizadas la función
posteriormente como cualquier función del asistente de
funciones de Excel. Su alcance para los usuarios  Aceptar
depende de los conocimientos que tenga sobre Excel.  Colocar los parámetros o argumentos.
 Aceptar
Nota:
Las funciones de usuario requieren de los 1.4 COMO ELIMINAR UNA FUNCION
conocimientos mínimos de programación en cualquier
compilador o interprete. Si desea eliminar alguna de las funciones de usuario
que previamente codificó, proceda de la siguiente
1.1 CREACIÓN DE FUNCIONES forma:

Para crear una función de usuario necesita insertar una  Colocarse en el Editor de Visual Basic
hoja de Módulo de Visual Basic en su libro de trabajo. (Herramientas > Macro > Editor de Visual Basic)
Para hacerlo proceda como se le indica a continuación: donde se encuentra la función
 Marcar código de la función
Insertar Módulo de Visual Basic:  Eliminarlo
 Clic en el menú Herramientas > Macro > Editor
de Visual Basic 1.5 PROGRAMACION ESTRUCTURADA.
 Clic en el menú Insertar > Módulo La programación estructurada en sus inicios fue desa
rrollada por Edgar W. Dijkstra y se basa en el teorema de
 Teclear código de la función
la estructura desarrollado en 1966 por Böhm y Jacopini.
 Volver a la hoja de calculo Éste teorema establece que un programa propio puede
ser escrito utilizando sólo las siguientes estructuras
Nota: Todas las funciones se generan con código de lógicas de control: Secuenciales, Selectivas y
Excel Visual Basic Repetitivas. Un programa se define como propio
cuando cumple con los siguientes requerimientos:
1.2 SINTAXIS DE UNA FUNCIÓN.
 Tiene exactamente una entrada y una salida para
La creación de cualquier función de usuario en Excel control del programa.
siempre deberá obedecer los lineamientos que marca
la siguiente:
 Existen caminos a seguir desde la entrada hasta la
salida que conducen por cada parte del programa,
Sintaxis: es decir, no existen lazos infinitos ni instrucciones
que no se ejecutan.
Function Nombre_de_funcion(Arg1,-Arg 2, ...Arg N)
La Programación Estructurada permite codificar un
Cuerpo de la función programa en común acuerdo con las reglas siguientes:
End Function
 El programa parte de un diseño modular.
 Los módulos son diseñados de forma descendente.
1.3 COMO EJECUTAR UNA FUNCION  Cada módulo integra en su código las tres
estructuras de control básicas. Secuenciales,
De forma predeterminada, una función definida por el
Selectivas y Repetitivas.
usuario se limita en ámbito al libro en el que reside la

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 11


MODULO I: FUNCIONES DE USUARIO AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

La ventaja de utilizar éste tipo de programación radica en según sea el resultado de dicha condición. Cuando sólo
que las instrucciones son fáciles de leer, comprender y se requiere de la ejecución de acciones al cumplirse la
codificar permitiendo aprovechar al máximo los recursos condición especificada (alternativa simple), la sentencia
de la computadora IF tiene la siguiente sintaxis.

1.6 ESTRUCTURAS SECUENCIALES If condición Then


La estructura de control secuencial consta de Instrucción 1
entrada, acciones y salida, las cuales se agrupan Instrucción 2
linealmente para su ejecución. Instrucción n
Ejemplo 1 End If
„ FUNCIÓN PARA CALCULAR UNA RAÍZ CÚBICA
Ejemplo:
' FECHA : ENERO 2008
' Función que calcula la raiz cúbica de cualquier número
Function RAIZ3(NUMERO) If…Then …Else
‟ RAIZ3 es el nombre de la función y NUMERO es el parámetro
Cuando se espera que al no cumplirse la condición,
RAIZ3 = NUMERO ^ (1 / 3) tenga lugar una serie de instrucciones opuestas o
„ Esta línea es el cuerpo de la función diferentes a las que ocurrirían en caso de cumplirse ésta
End Function (alternativa doble) entonces la sintaxis de la sentencia
If tendrá una una estructura como la siguiente:
Nota: Para colocar comentarios en una función,
coloque un apóstrofe al principio de la línea y después If condición Then
coloque el comentario, en el ejemplo anterior las 3
primeras líneas son comentarios, los comentarios no Instrucción 1
afectan al código de la función. Instrucción 2
Instrucción n
Ejemplo 2.
Else
„ FUNCIÓN PARA CALCULAR CUALQUIER RAÍZ DE Instrucción 1
CUALQUIER NÚMERO. Instrucción 2
Instrucción n
Function RAIZN(NUMERO, NUM_RAIZ)
End If
RAIZN = NUMERO ^ (1 / NUM_RAIZ)
End Function
Ejemplo:
1.7 ESTRUCTURAS SELECTIVAS. 'FUNCIÓN PARA CALCULO DEL IVA
En las estructuras selectivas las acciones se ejecutan Function IVA(PRECIO, CAUSA)
dependiendo del resultado de una condición o If CAUSA = "s" Or CAUSA = "S" Then
expresión y tienen la característica de contar con una o
más salidas. IVA = PRECIO * 0.15
Else
La sentencia “IF” IVA = 0
Una de las herramientas más útiles en el proceso de End If
información es la expresión condicional, que forma parte End Function
de una sentencia de programa, la sentencia IF que
realiza preguntas que requieren respuestas lógicas o
booleanas (del tipo True o False, Yes o No)… sobre If…Then…ElseIf
una propiedad o variable en el código del programa. En la consideración anterior de la sentencia If o se cumple
una condición y ejecuta determinadas instrucciones, o
If…Then no se cumple y ejecuta otras condiciones distintas. Puede
La sentencia IF permite evaluar una condición en el ocurrir que en caso de ser necesario, se aniden una o
programa y llevar a cabo una serie de instrucciones, más condiciones similares en cuyo caso la sintaxis de
la sentencia If toma la siguiente forma:

12 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO I: FUNCIONES DE USUARIO

Ejemplo 3:
IF condición Then
Instrucción 1 „ FUNCIÓN PARA ASIGNAR CALIFICATIVOS
Instrucción 2
Function CALIFICATIVO(CALIFICACION)
Instrucción n
If CALIFICACION < 6 Then
ElseIf condición Then CALIFICATIVO = "SOBORNA AL MAESTRO"
Instrucción 1 ElseIf CALIFICACION >= 6 And CALIFICACION <= 6.5 Then
Instrucción 2 CALIFICATIVO = "APENITAS"
Instrucción n ElseIf CALIFICACION > 6.5 And CALIFICACION <= 7.5 Then
ElseIf condición Then CALIFICATIVO = "REGULAR"
Instrucción 1 ElseIf CALIFICACION > 7.5 And CALIFICACION <= 8.5 Then
Instrucción 2 CALIFICATIVO = "BIEN"
Instrucción n ElseIf CALIFICACION > 8.5 And CALIFICACION <= 9.5 Then
Else condición Then CALIFICATIVO = "MUY BIEN"
Instrucción 1 ElseIf CALIFICACION > 9.5 And CALIFICACION <= 10 Then
Instrucción 2 CALIFICATIVO = "GENIO"
Instrucción n Else
End If CALIFICATIVO = "NO TE PASES"
End If
Ejemplo 1: End Function

' FUNCIÓN PARA CALCULAR DESCUENTOS


Function DESCUENTOS(PRECIO, DEPTO) La Sentencia “SELECT CASE”
If DEPTO = 1 Then
DESCUENTO = 0.1 Esta estructura se utiliza cuando se tiene que
ElseIf DEPTO = 2 Then comprobar el valor de una variable y en función de éste
valor seleccionar y ejecutar una serie de instrucciones
DESCUENTO = 0.2
específicas (alternativa múltiple). La sintaxis para la
ElseIf DEPTO = 3 Then
instrucción Select Case es la siguiente:
DESCUENTO = 0.3
Else
DESCUENTO = 0 Select Case Parámetro
End If Case 1 el primer valor posible en la variable.
DESCUENTOS = PRECIO * DESCUENTO Instrucción 1
End Function Instrucción 2
Instrucción n
Ejemplo 2:
Case 2 el segundo valor posible en la variable.
' FUNCIÓN PARA CALCULAR AUMENTOS Instrucción 1
Function AUMENTOS(SUELDO) Instrucción 2
If SUELDO <= 1000 Then Instrucción n
AUMENTO = 0.3
ElseIf SUELDO > 1000 And SUELDO <= 2000 Then Case 3 el tercer valor posible en la variable.
AUMENTO = 0.25 Instrucción 1
ElseIf SUELDO > 2000 And SUELDO <= 3000 Then Instrucción 2
AUMENTO = 0.2 Instrucción n
ElseIf SUELDO > 3000 And SUELDO <= 4000 Then Case Else algún otro valor en la variable distinto
AUMENTO = 0.15 de los anteriores
ElseIf SUELDO > 4000 And SUELDO <= 5000 Then Instrucción 1
AUMENTO = 0.1 Instrucción 2
Else Instrucción n
AUMENTO = 0.05
End Select
End If
AUMENTOS = SUELDO * AUMENTO
End Function
Ejemplo:

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 13


MODULO I: FUNCIONES DE USUARIO AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

„ FUNCIÓN DESCUENTOS USANDO SELECT CASE 1.8 ESTRUCTURAS REPETITIVAS


Function REBAJA(PRECIO, DEPTO) En el procesamiento de información las estructuras
Select Case DEPTO repetitivas o bucles nos permiten optimizar código y
Case 1 agilizar los programas, ya que una o varias instrucciones
REBAJA = precio * 0.1 pueden repetirse un número determinado o
Case 2 indeterminado de veces.
REBAJA = precio * 0.2 Bucle: En programación, un bucle o ciclo es un tipo de
Case 3 estructura de control que permite repetir una o más
REBAJA = precio * 0.3 sentencias múltiples veces, lo que ahorra tiempo, deja el
Case Else código más claro y facilita su modificación en el futuro.
REBAJA = 0 Los bucles con Do se utilizan cuando no se conoce
End Select con exactitud el número de ocasiones en las que se
End Function repetirá el conjunto de instrucciones.
Ejemplo:
El bucle “Do While”
„ FUNCIÓN PARA LOS DÍAS DE LA SEMANA
Function DIASN(NRODIA) El bucle Do While (“Hacer mientras”) es una estructura
de la mayoría de los lenguajes de programación
Select Case NRODIA
estructurados cuyo propósito es repetir un bloque de
Case 1 código mientras una condición se mantenga verdadera.
DIASN = "DOMINGO" La sintaxis para ésta estructura es la siguiente:
Case 2
DIASN = "LUNES" Do While condición
Case 3 Instrucción 1
DIASN = "MARTES" Instrucción 2
Case 4 Instrucción n
DIASN = "MIERCOLES" Loop delimita el final del bloque de instrucciones a repetir
Case 5 en el bucle.
DIASN = "JUEVES"
Case 6
DIASN = "VIERNES"
Ejemplo:
Case 7
DIASN = "SABADO"
Case Else
DIASN = "NUMERO NO VALIDO, SOLO DEL 1 AL 7"
End Select
End Function

14 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO II: MACROS

Módulo II
Macros

Objetivo Especifico:
Al finalizar el módulo el participante:

 identificará y aplicará el procedimiento para grabar una macro.

 Utilizando macros, automatizar las tareas que son repetitivas en sus hojas de
cálculo.

 Conocerá y modificará el código Visual Basic para modificar sus macros.

 Creará un sistema de Macros para Excel

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 15


MÓDULO II: MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

16 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO II: MACROS

INTRODUCCIÓN
Si es como la mayoría de los usuarios de Excel, puede
que la mayor parte del trabajo que realice sea
repetitivo. Por ejemplo, si siempre introduce una serie
de cabeceras en los informes financieros o que
incremente de manera habitual la anchura de las
primeras columnas del libro de trabajo. Si estas
acciones le llevan mucho tiempo puede considerar
grabar las órdenes como una macro y ejecutar la macro
siempre que quiera realizar ese trabajo. Una macro es
un conjunto de instrucciones a las que se da un nombre
y que indica a Excel una determinada acción a realizar.
En este módulo se verá la forma que tienen las macros
y cómo se pueden utilizar para incrementar la
productividad. También veremos como grabar, ejecutar,
editar y asignarles botones de órdenes.

Una macro consta de una serie de instrucciones


escritas en un lenguaje denominado Visual Basic que 2.2 TIPOS DE MACROS
Excel puede entender. Para crear una macro, no necesita
En Excel pueden grabarse dos tipos de macros:
comprender el lenguaje que se utiliza sólo necesita saber
Absolutas y Relativas
qué órdenes de Excel desea que la macro ejecute para
usted. Puede registrar las órdenes en secuencia, y
éstas serán traducidas automáticamente al lenguaje Activar macros Relativas
utilizado por Excel. Registrar una macro es similar a  Clic en el Menú Herramientas > Macro > Grabar
registrar una música en una cinta magnetofónica: no nueva macro ...
necesita comprender cómo se registra en la cinta; sólo
tiene que saber qué música desea registrar.  Nombre de la Macro: Teclear nombre para la
macro
2.1 MACROS  Aceptar
Si encuentra que ejecuta con alguna frecuencia
determinadas tareas, como por ejemplo la aplicación de
la negrita, la letra cursiva y un tipo de tamaño mayor
para los títulos de la hoja o que introduce las mismas
categorías en cada hoja de presupuesto, puede ahorrar
tiempo si automatiza estas tareas. Puede registrar una
macro para casi cualquier serie de acciones que
ejecute con Excel.

Para crear una macro, active simplemente el  En los dos nuevos iconos que aparecen, Clic en
registrador de macros; ejecute la secuencia de tareas Referencia Relativa
que desea registrar, y luego desactive el registrador de (Note como este icono se ACTIVA Y SE DESACTIVA,
macros. Cuando registre la macro, las órdenes son esto nos indica si la macro va a ser Relativa o
traducidas automáticamente al lenguaje Visual Basic y Absoluta, para que sea relativa el icono debe de estar
almacenadas en una hoja de módulo separada de su ACTIVADO (oprimido))
libro de trabajo.  Detener la macro (Clic en Detener grabación, ó
Menú Herramientas, Macro, Detener grabación)
Registro de Macros
Antes de registrar una macro, necesita planificar
Ejemplos
exactamente lo que desea que haga la macro, y en qué Ejemplo 1
orden. Después de escoger Grabar nueva macro, cada
celda que seleccione, todo lo que introduzca, y cada
orden que escoja será registrada. También necesita
Crear una macro para un Título
pensar en un nombre y una descripción para la macro  Colocarse en la celda para el título
que identifique exactamente lo que ésta hace.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 17


MÓDULO II: MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

 Clic en el Menú Herramientas > Macro > Grabar


nueva macro ...
 Nombre de la macro: Teclee TITULO
 Aceptar
Comienza la grabación
 Clic en el icono Referencia Relativa (Si ya esta
activado ya no lo haga)
 Teclear : Centro Nacional
 Enter
 Doble clic en la separación de las columnas para
ajuste automático
 Detener la macro (Menú Herramientas > Macro >
Detener grabación ó Clic en el icono Detener
grabación)
Ejemplo 2 2.3 EL CÓDIGO DE LA MACRO
 Colocarse en la celda para el título Para ver el código correspondiente a su macro en
 Clic en Menú Herramientas > Macro > Grabar lenguaje Visual Basic haga lo siguiente:
nueva macro ...  Clic en Menú Herramientas > Macro > Macros ...
 Nombre de la macro: Teclee TITULO2  Seleccionar el nombre de la macro : TITULO
 Aceptar  Modificar. Observará el siguiente código:
Comienza la grabación: Sub TITULO()
 Clic en el icono Referencia Relativa (Si ya esta ActiveCell.FormulaR1C1 = "CENTRO NACIONAL"
activado no lo haga) ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit
End Sub
 Teclear : CNCC
 Enter Nota: Lo que usted ve es código Excel Visual Basic.
Cualquier cambio en su macro lo realizará usando
 Clic Menú Formato > Celdas ... > Fuente Instrucciones de código Visual Basic
Fuente: Impact
Estilo: Regular Salir del código
Tamaño: 24
Color: Azul  Clic en el icono Ver Microsoft Excel ó ALT + F11
 Bordes
Línea
Eliminar una macro
Estilo: Seleccione un Estilo  Clic en Menú Herramientas > Macro > Macros ...
Color: Amarillo
Contorno  Seleccionar el nombre de la macro : TITULO
 Tramas: Color: Rojo  Eliminar
 Aceptar  Sí
 Ajuste automático de columnas (Doble clic en la 2.4 USO DE BOTONES PARA FACILITAR
separación de la columna)
LA EJECUCIÓN DE MACROS
 Detener la macro (Menú Herramientas > Macro >
Detener grabación ó Clic en el icono Detener Puede ejecutar cualquier
grabación) macro de su libro desde el
cuadro de diálogo de
Ejecutar la macro: Macro, pero éste no
siempre es el método más
 Colocarse en una celda vacía rápido. Si tiene una macro,
 Clic en Menú Herramientas > Macro > Macros ... la cual se utilizará con
cierta frecuencia en una
 Seleccionar el nombre de la macro : TITULO
hoja particular, puede
 Ejecutar añadir un botón a esa hoja

18 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO II: MACROS

y asignar la macro al botón. De esta forma, puede 2.6 MODIFICAR UNA MACRO
pulsar el botón para ejecutar la macro, en lugar de
utilizar una orden de menú. Incluso puede acceder a la  Editar la macro
macro a través del menú que debería necesitar.  Realizar los cambios adecuados
 Pasar a la hoja de trabajo
Colocar un botón a una macro
 Deben de existir macros  Para modificar sus macros usaremos código de
Excel Visual Basic
 Mostrar la familia de iconos de la barra de
herramientas Formularios
2.7 INSTRUCCIONES VISUAL BASIC
 Seleccione el icono Botón
PARA MODIFICACION DE MACROS
 Trace un botón en su
hoja de calculo del Instrucción InputBox:
tamaño de una celda
Muestra un mensaje en un cuadro de diálogo, espera
 Al soltar el botón del que el usuario escriba un texto o haga clic en un botón y
Mouse aparece su lista devuelve un tipo String con el contenido del cuadro de
de macros texto.
 Seleccione la macro que
quiere para su botón Sintaxis: Variable=Inputbox(“Mensaje”)
 Aceptar
 Clic dentro del botón
 Elimine el texto de Botón 1 que aparece y coloque
su nuevo texto
 Clic fuera del botón

Ejecutar su macro con el botón


 Colóquese en una celda vacía
 De un clic sobre su botón Código de la macro TITULO:

Sub TITULO( )
Modificar su botón ActiveCell.FormulaR1C1 = "CENTRO NACIONAL"
 Clic derecho con su Mouse sobre el botón ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit
 Realice los cambios necesarios. End Sub

2.5 ASIGNAR MACRO A UN OBJETO GRAFICO Código de la Macro TITULO modificado con la instrucción
INPUTBOX y una variable llamada NOMBRE
 Tener el gráfico en la hoja (Clic en el menú Insertar >
Imagen > Imágenes prediseñadas, Sub TITULO()
Seleccione una Imagen e Insértela, modifique el NOMBRE = InputBox("TECLEA EL NOMBRE QUE DESEAS")
tamaño si la imagen es muy grande)
ActiveCell.FormulaR1C1 = NOMBRE
 Clic derecho sobre el gráfico > Asignar macro ...
ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit
 Seleccionar nombre de la macro : TITULO End Sub
 Aceptar
En pantalla aparecerá el siguiente cuadro:

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 19


MÓDULO II: MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

EJERCICIO 1
Genere una macro para capturar MATRICULA, NOMBRE,
PUESTO Y SUELDO en una Base de Datos como se
muestra en el siguiente Ejemplo.

Enseguida modifique el código para que la


computadora nos pida a través de la instrucción Input
Box la Matricula, el Nombre, el Puesto y el Sueldo, y
los coloque al final de la base de datos. El código ya
modificado con el uso de la instrucción Input Box debe
quedar de la forma siguiente.

SECUENCIA DE GRABACIÓN CODIGO VISUAL

Sub CAPTURA()
NOMBRE DE LA MACRO: CAPTURA
Application.Goto Reference:="R1C1"
TIPO: RELATIVA Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
1.- F5 – A1 – Enter
MATRICULA = InputBox("Teclea la Matrícula del Trabajador")

2.- FIN  ActiveCell.FormulaR1C1 = MATRICULA


ActiveCell.Offset(0, 1).Range("A1").Select
3.- Teclee la MATRICULA (“1”) - Enter NOMBRE = InputBox("Teclea el nombre del Trabajador")
ActiveCell.FormulaR1C1 = NOMBRE
4.-  Teclee el NOMBRE (“JUAN”) - Enter ActiveCell.Offset(0, 1).Range("A1").Select
PUESTO = InputBox("Teclea el Puesto del Trabajador")
5.-  Teclee el PUESTO (“MATEMATICO”) - Enter
ActiveCell.FormulaR1C1 = PUESTO

6.-  Teclee el SUELDO (“10000”) - Enter ActiveCell.Offset(0, 1).Range("A1").Select


SUELDO = InputBox("Teclea el Sueldo del Trabajador")
7.- F5 - A1 - Enter ActiveCell.FormulaR1C1 = SUELDO
Application.Goto Reference:="R1C1"
8.- Detener Grabación End Sub

Instrucción MsgBox : Instrucción DO:


La instrucción MsgBox muestra un mensaje en un La instrucción Do repite un bloque de instrucciones
cuadro de diálogo, espera a que el usuario haga clic en cuando una condición es Verdadera o hasta que una
un botón y devuelve un tipo Integer correspondiente al condición se convierta en Verdadero o Falso
botón elegido por el usuario. dependiendo de la condición.

Sintaxis: Sintaxis:
Variable = Msgbox(“Mensaje”,VBYesNo)

DO WHILE

Instrucciones

LOOP

El código del ejercicio realizado modificado con el uso


de la variable MSGBOX debe quedar de la forma
Instrucciones
siguiente:
LOOP

20 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO II: MACROS

Pegue el código que Copió


Variable = vbYes Vuelva a la hoja de Excel y guarde su documento
Do While Variable = vbYes
MÁS EJEMPLOS Y EJERCICIOS:
Instrucciones
EJERCICIO 2:
Variable = MsgBox(“¿Desea capturar mas Datos?”,vbYesNo)
Loop En una hoja de Excel crear una macro para capturar
MATRÍCULA, NOMBRE, CATEGORIA, SUELDO, NIVEL
Este es el código de la macro del ejercicio anterior ACADEMICO Y EDO. CIVIL del trabajador en el rango de
utilizando las instrucciones Do While, MsgBox, e B2:B7, después copiar estos datos y colocarlos al final de
Inputbox para crear una macro repetitiva. En este una lista.
ejemplo se utilizaron 5 Variables que son:
RESPUESTA, que sirve para poner la condición de la
Instrucción Do While, MATRICULA, para almacenar la
matrícula, NOMBRE, para almacenar el nombre,
PUESTO, para almacenar el puesto y SUELDO para
almacenar el sueldo.

Sub CAPTURA()
RESPUESTA = vbYes
Do While RESPUESTA = vbYes
Application.Goto Reference:="R1C1"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
MATRICULA = InputBox("Teclea la Matrícula del Trabajador")
ActiveCell.FormulaR1C1 = MATRICULA
EJERCICIO 3:
ActiveCell.Offset(0, 1).Range("A1").Select Crear una macro para generar una factura. La macro
genera el número consecutivo de la factura; limpia los
NOMBRE = InputBox("Teclea el nombre del Trabajador")
datos del cliente anterior y todos los productos que se
ActiveCell.FormulaR1C1 = NOMBRE llevó; luego, pide el Nombre del Cliente, así como su
ActiveCell.Offset(0, 1).Range("A1").Select Dirección. Enseguida ingresa el nombre del producto,
PUESTO = InputBox("Teclea el Puesto del Trabajador") el precio, la cantidad, y realiza operaciones para calcular
el subtotal, el IVA y Total, y los suma al total a pagar. Al
ActiveCell.FormulaR1C1 = PUESTO final este total a pagar lo acumula en un total global.
ActiveCell.Offset(0, 1).Range("A1").Select
SUELDO = InputBox("Teclea el Sueldo del Trabajador")
ActiveCell.FormulaR1C1 = SUELDO
RESPUESTA = MsgBox("Desea Capturar mas Datos", vbYesNo)
Loop
Application.Goto Reference:="R1C1"
End Sub

GRABAR CODIGO EN UNA MACRO EXISTENTE


Genere otra macro con las instrucciones que desea EJERCICIO 4:
agregar a la macro que ya existe
Edite la nueva macro y copie el código que generó Crear una macro que nos pida MATRICULA, NOMBRE,
PUESTO y SUELDO del trabajador y los coloque al
Edite la macro a la cual desea agregar mas final de la lista, y que al terminar nos pregunte si
instrucciones deseamos seguir capturando mas datos, si
Ubique el cursor en la posición donde desea el contestamos que si, entonces que nos pida
código de las nuevas instrucciones nuevamente los datos para capturar, pero si
contestamos que no, que termine la macro.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 21


MÓDULO II: MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

(Figura igual al Ejercicio 1)

EJERCICIO 5: EJERCICIO 6:
Crear una macro que nos pida MATRICULA, NOMBRE, Crear una macro para llenar esta factura. La macro
genera el número consecutivo de la factura; limpia los
CATEGORIA, SUELDO, NIVEL ACADEMICO y datos del cliente anterior y todos los productos que se
ESTADO CIVIL del trabajador y los coloque en el llevó; luego, pide el nombre del cliente, así como su
rango B2:B7, luego que nos pida comprobar si están dirección. luego nos pide comprobar si los datos del
cliente son correctos, si están mal que nos vuelva a
bien los datos, si están mal que los vuelva a pedir, si
pedir los datos, si están bien que avance para ingresar
están bien que los copie y los coloque al final de la el nombre del Producto, el Precio, la Cantidad, y realiza
lista, y al terminar nos pregunte si deseamos seguir operaciones para calcular el Subtotal, el IVA y Total, al
llegar al total individual nos pregunte si deseamos mas
capturando mas datos, si contestamos que si, que nos
productos para este cliente, si contestamos que si, que
pida nuevamente los datos para capturar, pero si nos vuelva a pedir producto, precio y cantidad, si
contestamos que no, que termine la macro. contestamos que no los suma al total a pagar. Al final este
total a pagar lo acumula en un total global.
(Figura igual al Ejercicio 2)
(Figura igual al Ejercicio 3)

22 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO III: APLICACIÓN DE MACROS

Módulo III
Aplicación
de Macros
Objetivos Especificos:
Al finalizar el módulo el participante:

 Creará una aplicación usando macros

 Aplicará los conocimientos adquiridos en los cursos anteriores de Excel.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 23


MÓDULO III: APLICACIÓN DE MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

24 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO III: APLICACIÓN DE MACROS

INTRODUCCIÓN
La aplicación que se desarrollara en este módulo hará que el participante ponga a prueba sus conocimientos de
Excel 2003, aquí automatizara las opciones de: definir nombres de rangos, pegado especial, operaciones con hoja
de cálculo, funciones, movimientos de cursor, etc; al final se dará cuenta de la utilidad y funcionalidad de las macros.

Los ejercicios de las macros se pueden resolver fácilmente con las instrucciones vistas en los cursos Básico e
Intermedio. Se recomienda tener a la mano los manuales respectivos, ya que se aplicarán los conocimientos
adquiridos en este curso y los anteriores de Excel

3.1 HOJA MENU PRINCIPAL

En esta hoja el participante colocará botones de macro Procedimiento de Grabación:


que hagan referencia a cada una de las opciones
indicadas, para poder hacer esto primero debe de  F5 - INICIO_VENTAS
crear todas las macros que necesita en este ejercicio,  Enter
aquí aplicará todos sus conocimientos adquiridos en  Detener la macro
sus cursos de Excel anteriores, ya que deberá de
manejar nombres de rangos, operaciones con * Hacer lo mismo para cada hoja del libro
archivos, pegado especial, movimientos del cursor,
fórmulas, búsquedas etc., ponga a prueba sus Código Visual Basic para ésta macro:
conocimientos.
Sub A_VENTAS()
Application.Goto Reference:="INICIO_VENTAS"
Procedimiento para crear el menú principal: End Sub
Crear un Nombre de Rango en la posición A1 de cada
hoja (Por ejemplo para ventas se llamará Crear un botón para ejecutar la Macro:
INICIO_VENTAS, para almacén se llamará
INICIO_ALMACEN, etc.) Mostrar la Barra de Herramientas “Formulario”
Seleccionar icono Botón
Pasos para definir el nombre: En la hoja de calculo trazar
un botón
Colocarse en A1
Asignar la macro para este
Insertar > Nombre > Definir botón (A_VENTAS).
Teclear el nombre del rango (INICIO_VENTAS) Aceptar
Aceptar Clic dentro del botón
Eliminar el nombre que tiene el botón
Crear una macro que se dirija a esa Teclear nuevo titulo del botón (VENTAS)
posición: Clic fuera del botón.
Herramientas > Macro > Grabar nueva macro…
Teclear Nombre de la macro: (A_VENTAS). * Hacer lo mismo para cada hoja del libro

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 25


MÓDULO III: APLICACIÓN DE MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

3.2 HOJA ALMACEN

En esta hoja el participante elaborara una macro para 2. F5 – G10 – Enter


agregar nuevos productos al almacén; una macro para 3. Teclear CLAVE - Enter
actualizar las existencias de los productos en el 4. F5 – G14 – Enter
almacén y por último una macro para encontrar un 5. Teclear CANTIDAD - Enter
producto por medio de la clave o el nombre. 6. CRTL+C
Debe definirse previamente un nombre (“PRODUCTOS”) 7. F5 – A1 – Enter
para el rango que contendrá la lista de datos de 8. Edición > Buscar >Teclear CLAVE
almacén. Se sugiere establecer un rango para ingresar Opciones: Dentro de: Hoja Buscar: Por columnas
por lo menos 500 productos (A2:D503) Buscar dentro de: Valores
 Coincidir con el contenido de toda la celda
PROCEDIMIENTO PARA AGREGAR Buscar Siguiente – Cerrar
9.    -
PRODUCTOS A ALMACEN 10. Edición > Pegado especial
Antes deberá definirse un nombre (“PRODUCTO_NUEVO”)  Valores -  Sumar Aceptar
para el área de productos adquiridos: (G5:G8) 11. Esc
Procedimiento de Grabación: 12. F5 – A1 – Enter
1. F5 – INICIO_ALMACEN - Enter
2. F5 – G5 - Enter PROCEDIMIENTOS PARA BUSCAR
3. Teclear CLAVE - Enter PRODUCTOS EN ALMACEN
4.  - Teclear PRODUCTO - Enter NOTA: Este procedimiento permite hacer una búsqueda
5.  - Teclear PRECIO - Enter de un producto utilizando la clave o el nombre del mismo.
6.  - Teclear COMPRA - Enter La clave y nombre se deberá pedir a través de un Input Box.
7. F5 – PRODUCTO_NUEVO - Enter Colocar antes en G17, G18 Y G19 fórmulas para la
8. CTRL+C búsqueda del nombre, precio y existencia del producto
9. F5 - A1 - Enter que corresponde a la clave o nombre dados:
10. FIN -   =BUSCARV(G16,PRODUCTOS,2,FALSO)
11. Edición > Pegado especial =BUSCARV(G16,PRODUCTOS,3,FALSO)
 Valores Transponer - Aceptar =BUSCARV(G16,PRODUCTOS,4,FALSO)
12. Esc Procedimiento de Grabación:
13. F5 - A1 - Enter 1. F5 - A1 - Enter
PROCEDIMIENTO PARA ACTUALIZAR 2. Edición > Buscar > Teclear la clave
Opciones:
EXISTENCIAS EN ALMACEN Dentro de: Hoja Buscar: Por columnas
Buscar dentro de: Valores
NOTA: Antes de proceder al grabado de la macro colocar
 Coincidir con el contenido de toda la celda
funciones de búsqueda en G11, G12 y G13 que permitan
Buscar siguiente, Cerrar
consultar desde la base de datos el nombre, precio y
3. CTRL + 
existencia del producto que corresponde a la clave dada:
4. CTRL + C
=BUSCARV(G10,PRODUCTOS,2,FALSO) 5. F5 - G16 - Enter
=BUSCARV(G10,PRODUCTOS,3,FALSO) 6. Edición > Pegado Especial
=BUSCARV(G10,PRODUCTOS,4,FALSO)  Valores Aceptar
Procedimiento de Grabación: 7. Esc
8. F5 - A1 – Enter
1. F5 – INICIO_ALMACEN – Enter

26 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO III: APLICACIÓN DE MACROS

3.3 HOJA VENTAS

La macro de la hoja ventas debe hacer lo siguiente: Al =BUSCARV(B3,PRODUCTOS,2,FALSO) Para Producto


hacer clic sobre el botón Ventas, la computadora nos =BUSCARV(B3,PRODUCTOS,3,FALSO) Para Precio
pedirá la clave del producto a vender, la computadora,
deberá de decirnos que producto es, cuantos tenemos =BUSCARV(B3,PRODUCTOS,4,FALSO) Para Existencia
en el almacén y el precio, por ultimo nos pedirá la
cantidad a vender y al dar Enter la computadora Procedimiento de Grabación:
realizará los cálculos correspondientes para el Nombre de la macro: “Venta”
subtotal, IVA y total. 1. F5 – INICIO_VENTAS - Enter
2. F5 - B3 - Enter
PROCEDIMIENTO PARA LA HOJA VENTAS 3. Teclear la CLAVE - Enter
Antes de iniciar asegurarse que ya existe un nombre 4. F5 - B6 – Enter
(“PRODUCTOS”) para el rango de la lista de productos 5. Teclear la CANTIDAD - Enter
que se encuentran en almacén. Si no es así deberá 6. CTRL+C
crearlo con el método siguiente. 7. F5 - INICIO_ALMACEN - Enter
(Para cambiarse a HOJA ALMACEN)
Procedimiento para crear el Nombre: 8. Edición > Buscar
Teclear la CLAVE a vender
Seleccionar (marcar) el rango de datos Opciones:
Insertar > Nombre > Definir Dentro de: Hoja Buscar: Por Columnas
Buscar dentro de: Valores
Teclear nombre para el rango (“PRODUCTOS”)  Coincidir con el contenido de la celda.
Agregar, Aceptar Buscar Siguiente, Cerrar
9.    Edición - Pegado Especial
 Valores  Restar
Aceptar
Crear fórmulas de búsqueda en B4, B5 y B7 para 10. Esc
saber el nombre del producto, precio y existencia: 11. F5 INICIO_VENTAS - Enter

Procedimiento para hacer la búsqueda: Modificaciones al código:


Colocarse en la celda donde se va a colocar el Modificar el código para efectuar la venta si el cliente lo
Nombre del producto. autoriza. O en su caso modificar la cantidad o cancelar
la venta.
Crear las formulas de búsqueda:

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 27


MÓDULO III: APLICACIÓN DE MACROS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

3.4 HOJA FACTURAS

En esta hoja el participante realizará una macro para 11. Teclear NOMBRE del cliente - Enter
facturar los productos que está vendiendo, al hacer clic 12.  - Teclear DIRECCION del cliente- Enter
en el botón de la macro, la macro deberá de generar el 13.  - F5 - A7- Enter
número consecutivo de la factura, borrar los datos del
14. FIN 
cliente y los productos vendidos en la factura anterior,
pedir el nombre del nuevo cliente, pedir la dirección, 15. Teclear CLAVE – Enter
solicitar la clave del producto a vender, después de dar 16.  = BUSCARV(,PRODUCTOS,2,FALSO)
la clave, la computadora deberá decirnos que producto - Enter
es y el precio, después nos pedirá la cantidad del 17.  =BUSCARV(,PRODUCTOS,3,FALSO)
producto a vender, realizará las operaciones -Enter
necesarias para calcular el Subtotal, IVA y Total, y 18.  Teclear CANTIDAD a vender- Enter
restará en la hoja almacén la cantidad vendida de este 19. Edición > Copiar (ó CTRL +C)
producto. Enseguida preguntará si deseamos agregar
20. F5 – INICIO_ALMACEN - Enter
mas productos, si contestamos que si repetirá el
mismo proceso (a partir de la clave del producto ya que 21. Edición > Buscar > Teclear la Clave
es el mismo cliente), en caso contrario, sumará al gran Opciones: Dentro de: Hoja;
total el total de esta factura para tener un total general. Buscar: Por Columnas
Buscar dentro de: Valores
Procedimiento para generar las facturas:  Coincidir con el contenido de toda la celda.
Los nombres de rango: PRODUCTOS (Hoja Almacén Buscar siguiente > Cerrar
A2:D503), ARTS_VENDIDOS (A9:G19); y CLIENTE (B4:B5) 22.    - Edición > Pegado Especial
son nombres que tiene que definir anterioridad.  Valores  Restar Aceptar
Además deberá poner un 1 en la celda F1 para 23. Esc
inicializar el contador del consecutivo. 24. F5 - INICIO_FACTURAS - Enter
Procedimiento de Grabación: 25. F5 - A7 Enter
26. FIN -    
1. F5 – INICIO_FACTURAS - Enter
27. =  *  Enter
2. F5 - F1 - Enter
28.  =  * 15% Enter
3. CTRL+C
29. =  +  Enter
4.  - Edición > Pegado especial
 Valores -  Sumar - Aceptar 30. F5 - G20 - Enter
5. Esc 31. Edición > Copiar (ó CTRL + C)
6. F5 - ARTS_VENDIDOS (Nombre de rango que 32. F5 – I2 - Enter
debió haber sido creado previamente) – Enter 33. Edición > Pegado Especial
7. Supr  Valores  Sumar Aceptar
8. F5 - CLIENTE (Nombre de rango que debió haber 34. Esc
sido creado previamente) – Enter 35. F5 - A1 - Enter
9. Supr 36. Detener Grabación
10. F5 - B4 - Enter

28 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO III: APLICACIÓN DE MACROS

3.5 HOJA DERECHOS

En esta hoja el participante únicamente genera una macro para que desde el menú al hacer clic en el botón
DERECHOS, le muestre esta hoja y al hacer clic en le botón MENÚ de esta hoja lo devuelva al menú principal.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 29


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO IV: BARRAS Y MENUS PERSONALIZADOS

Módulo IV
Barras y Menús
Personalizados
Objetivos Específicos:
Al finalizar el módulo el participante:

 Conocerá y aplicará el procedimiento para crear y modificar Barras de


Herramientas Personalizadas.

 Conocerá y aplicará el procedimiento para crear y modificar Menús


Personalizados.

 Creará Barras y Menús personalizados para alojar sus macros y logrando así que sus
aplicaciones sean más personalizadas.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 31


MÓDULO IV: BARRAS Y MENÚS PERSONALIZADOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

32 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO IV: BARRAS Y MENUS PERSONALIZADOS

INTRODUCCIÓN 4.2 BOTONES DE MACRO EN BARRAS


No es necesario utilizar Visual Basic para crear Barras PERSONALIZADAS
de Herramientas o Menús Personalizados en EXCEL. Para añadir a la barra creada botones que ejecuten
Crear y modificar Barras de Herramientas y Menús es macros, deberán arrastrarse los nombres de las
una habilidad general que se puede aplicar en macros desde la pestaña Comandos del cuadro de
cualquier momento en que desee personalizar la diálogo Personalizar hasta la barra de herramientas
interfaz de usuario en EXCEL. Sin embargo, a medida mediante el siguiente procedimiento:
que crezca su colección de macros, quizá desee
diseñar una Barra de Herramientas o un Menú  Clic en el menú Ver > Barras de herramientas
personalizados sólo para ejecutar sus macros. > Personalizar...
 Elija la ficha Comandos
Una forma profesional de trabajar Excel
 En la sección Categorías busque y elija Macros
Para dar una mejor presentación a sus libros de  En el cuadro Comandos: Clic sostenido en
trabajo, este Capítulo es el adecuado, ya que en él Personalizar Botón y arrástrelo hasta colocarlo
usted aprenderá a crear menús personalizados e dentro de la barra creada.
incluso crear sus propios menús para una aplicación Su nueva barra tendrá el siguiente aspecto:
en especial, y así poder evitar que el usuario
seleccione otras opciones ajenas a la aplicación.

Para crear una Barra de Herramientas o Menú


personalizados, antes debe de tener sus macros
elaboradas, para poder así asignarlas al elemento de
la barra o menú deseado.
Modificaciones a los elementos de una
4.1 CREAR UNA BARRA DE Barra Personalizada
HERRAMIENTAS PERSONALIZADA Las siguientes son modificaciones que puede asignar a
los elementos de su barra personalizada.
 Clic en el menú Ver > Barras de herramientas
> Personalizar ... A. Activar imagen y texto en botones
 Seleccione la ficha Barras de herramientas  Seleccionar Botón
 Clic en Nueva…  Clic en Modificar Selección del cuadro
Se abre el cuadro de diálogo Nueva barra de Personalizar
herramientas  Clic en Imagen y texto

B. Cambiar texto de botones


 Seleccionar Botón
 Clic en Modificar Selección del cuadro
Personalizar
 Nombre: Teclear el nombre deseado para el Botón
 Enter o clic fuera del menú.
 Nombre de la barra de herramientas :
Teclear el Nombre para la nueva barra de C. Cambiar imagen del botón
herramientas
 Seleccionar Botón
 Aceptar,
 Clic en Modificar
 Cerrar
Selección del cuadro
Personalizar
 Cambiar imagen del
Botón
Seleccionar la imagen
deseada.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 33


MÓDULO IV: BARRAS Y MENÚS PERSONALIZADOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

D. Asignar una macro a un botón  En la sección Categorías busque y elija Nuevo menú.

 Seleccionar Botón  En la sección Comandos: Clic sostenido en Nuevo


menú, y arrástrelo a la derecha del menú Ventana.
 Clic en Modificar Selección del cuadro Personalizar
 Asignar macro…
En el cuadro de Diálogo que aparece Seleccionar
la Macro deseada
 Aceptar

Dar nombre al Nuevo Menú


 Clic en el Botón Modificar selección
 Nombre : Teclear el nombre para el menú
B  Enter, Cerrar

4.4 ELEMENTOS DEL


MENÚ PERSONALIZADO
C  Clic en el menú Ver > Barras de herramientas >
Personalizar...
 Seleccione la ficha Comandos.
A
 En la sección Categorías busque y elija Macros.
 Comandos: Elija Personalizar elemento de menú.
 Clic sostenido en Personalizar elemento de menú
D y arrástrelo hacia su menú que acaba de crear y
suéltelo por debajo de él.

Nota: Después de cerrar el cuadro Personalizar podrá


ejecutar cualquier macro asignada a la barra dando un
clic en el botón respectivo.

4.3 CREAR UN MENU PERSONALIZADO


 Clic en el menú Ver > Barras de herramientas >
Personalizar ...
 Seleccione la ficha Comandos

34 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO IV: BARRAS Y MENUS PERSONALIZADOS

Dar nombre al nuevo elemento de menú  Clic sostenido sobre el elemento que desea quitar
y arrástrelo hacia la hoja de calculo
 Clic en el Botón: Modificar selección
 Cerrar
 Nombre : Teclee el nombre para el elemento de menú
Subrayar letras en menús
4.5 ASIGNAR MACROS A
 Menú Ver > Barras de herramientas >
MENÚ PERSONALIZADO Personalizar ...
 Clic en el Botón: Modificar selección  Elija la pestaña Comandos
 Asignar macro..: Seleccione el nombre de la  Seleccione el menú al cual desea subrayarle una
macro letra
 Aceptar, Cerrar  Clic en el Botón Modificar selección
 Nombre: Clic en el nombre del menú que aquí
4.6 SUBMENÚS aparece, coloque el cursor a la izquierda de la letra
que desea subrayar y coloque un ampersand (&)
 Clic en el menú Ver > Barras de herramientas >
Personalizar…  Enter, Cerrar
 Seleccione la ficha Comandos
Modificar menús
 En la sección Categorías elija Nuevo menú
 En la sección Comandos: Clic sostenido sobre  Menú Ver > Barras de herramientas >
Nuevo menú, arrástrelo hacia el menú que acaba Personalizar ...
de crear y colóquelo debajo de él.  Elija la pestaña Comandos
 Clic en el Botón Modificar selección  En la Barra de Menús seleccione el menú o
 Nombre: Teclear el nombre para el submenú submenú que desea modificar (de los que acaba
de crear, luego seleccione Modificar selección)
 Enter
 Realice los cambios, agregue o elimine elementos
Nota: Para agregar elementos de menú al submenú  Cerrar
creado y asignarle Macros utilizar los procedimientos
mencionados antes en éste mismo módulo. Ejercicio
Eliminar menús Elabore sus propias macros y genere una Barra y un
Menú Personalizados.
 Clic en el menú Ver > Barras de herramientas >
Personalizar ...
 Comandos
 Clic en el menú que desea eliminar

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 35


MÓDULO V: CUADROS Y HOJAS DE DIÁLOGO AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Módulo V
Cuadros y
Hojas de Diálogo

Objetivos Especificos:
Al finalizar el módulo el participante:

 Conocerá y diseñará Cuadros y Hojas de Diálogo.

 Creará aplicaciones con macros controladas desde una Hoja de Diálogo.

36 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO V: CUADROS Y HOJAS DE DIÁLOGO

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 37


MÓDULO V: CUADROS Y HOJAS DE DIÁLOGO AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

INTRODUCCION
Una forma distinta de manejar las macros en sus libros  Rango de Entrada: Teclee las coordenadas del
del trabajo es utilizando las opciones de Cuadros de rango donde se encuentran las delegaciones que
Diálogo y Hojas de Diálogo que nos ofrece Excel. tecleo.
 Vincular con la celda: Teclee B2
Después de haber creado y elaborado una serie de
Macros y Cuadros de Diálogo, usted necesitara  (En esta celda el objeto nos devolverá un valor de
manejar todas sus macros desde una Hoja especial de la delegación que seleccione en el cuadro, este
Diálogo. Esta opción nos permite ejecutar Macros que valor lo tendrá después que buscar usando
utilizan una hoja de Diálogo para una mejor BuscarV para saber a que delegación pertenece)
presentación de sus aplicaciones en pantalla.  Aceptar

5.1 CUADROS DE DIÁLOGO Agregar elementos a un “cuadro de lista”


Para crear un Cuadro de Diálogo usted necesita  Vaya a D3 y teclee PUESTOS
desplegar la Barra de Herramientas “Formularios” que
 En D4 teclee hacia abajo una lista de Puestos
se encuentra en el menú de Barras de Herramientas
(Medico, Ingeniero, Secretaria,...)
en donde observará los siguientes controles:
 Coloque un cuadro de lista en la celdas D10:D13
 De un Clic derecho sobre el cuadro de Lista
 Seleccione Formato de control...
 Rango de Entrada: Teclee las coordenadas donde
se encuentran los puestos que tecleo
 Vincular con la celda: Teclee D2
(En esta celda el objeto nos devolverá un valor del
puesto que seleccione en el cuadro de lista, este
valor lo tendrá después que buscar usando BuscarV
para saber a que puesto pertenece)
 Aceptar

Agregar valores a un “Control de número”


El icono Ejecutar cuadro de diálogo nos permite  Cree un control de número en las celdas F10:F12
ejecutar nuestra Hoja de Diálogo, Tendrá que hacer
 Clic derecho sobre el control de número
una macro para poder ejecutar la Hoja de Diálogo en
cualquier parte del libro.  Formato de control ...
 Valor actual: El valor que tendrá por default el
5.2 APLICACIÓN Y PROGRAMACIÓN DE objeto (200)
CONTROLES EN UN CUADRO DE  Valor mínimo: El valor mínimo para este objeto
DIÁLOGO: (50)
 Valor máximo: El valor máximo que tendrá este
Agregar elementos a un “Cuadro objeto (500)
Combinado”  Incremento: De cuantos en cuantos aumentara el
valor del objeto (50)
 En su libro de trabajo nombre una hoja como
 Vincular con la celda: La celda donde tendremos
HOJA DE DATOS (Todos los objetos estarán en
el valor del objeto (Teclee F2)
esta Hoja)
 Aceptar
 En la celda B3 teclee “DELEGACIONES”
 En B4 teclee hacia abajo una lista de delegaciones Agregar valores a un control “Barra de
(Hidalgo, Jalisco, Morelos,...)
Desplazamiento”
 Coloque un cuadro combinado en la celda B10
 De un Clic derecho sobre el cuadro combinado  Cree un control de Barra de desplazamiento en las
celdas F5:G5
 Seleccione Formato de control...

38 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL MÓDULO V: CUADROS Y HOJAS DE DIÁLOGO

 Clic derecho sobre el control Barra de desplazamiento


 Clic en Formato de control...
 Valor actual: El valor que tendrá por default el
objeto (45)
 Valor mínimo: El valor mínimo para este objeto (10)
 Valor máximo: El valor máximo que tendrá este
objeto (63)
 Incremento: De cuantos en cuantos aumentara el
valor del objeto (1)
 Cambio de Pagina: El incremento que hará su
control cuando de clic sobre el botón del centro (5)
 Vincular con la celda: La celda donde tendremos Para ejecutar su Diálogo de clic sobre el icono Ejecutar
el valor del objeto (Teclee G2) cuadro de diálogo de la Barra de Herramientas
 Aceptar “Formularios”

5.3 APLICACIÓN DE MACROS


EN UNA HOJA DE DIÁLOGO
INSERTAR HOJA DE DIALGO Genere una nueva hoja que se llame Captura de
datos y coloque los siguientes datos:
 Clic derecho con el Mouse sobre el nombre de una En A1 Teclee “Captura de datos”
Hoja en su libro de trabajo
En A3 Teclee “Nombre”
 Clic en Insertar...
En A4 Teclee “Delegación”
 Seleccione Diálogo de Excel 5.0 En A5 Teclee “Puesto”
 Aceptar En A6 Teclee “Nivel”
En la hoja de dialogó que insertó coloque los controles En A7 Teclee “Sueldo”
que se muestran en la hoja de la siguiente figura:

 En la hoja de Diálogo vincule todos los objetos con la hoja Captura de datos y la Hoja de datos. Use la
función de Buscarv para conocer en la hoja Captura de Datos la Delegación y el Puesto que seleccione en su
Hoja de Diálogo.

 Genere una macro para ejecutar su Hoja de Diálogo. Nombre de la Macro: Dialogo

Colocarse en la hoja que contiene el diseño del diálogo:

SECUENCIA DE GRABACION: CÓDIGO VISUAL;

Sub DIALOGO()
' DIALOGO Macro
1. Clic sobre el icono ejecutar Cuadro de Diálogo,
' Macro grabada el 09/07/2007 por CNCYC
2. Aceptar '
3. Finalizar Grabación DialogSheets("Diálogo1").Show
End Sub

Nota: Esta macro es la que ejecutará la Hoja de Diálogo (no olvide el método abreviado que asignó)

 Colóquese en la hoja Captura de datos y ejecute su macro

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 39


MÓDULO V: CUADROS Y HOJAS DE DIÁLOGO AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Ocultar Hoja de Diseño de Diálogo


Al terminar de diseñar el diálogo de Excel, y éste se A continuación aplicará el Dialogo diseñado en una
encuentra funcionando a la perfección, deberá crear la macro que le permitirá llenar la lista mostrada en la
macro que accede a dicho diálogo. Después de esto, la figura.
hoja en que se diseñó el diálogo de Excel no tiene
PROCEDIMIENTO:
mayor interés para el usuario de éste cuadro de
diálogo por lo que deberá ocultarse para no permitir Antes de proceder al grabado de dicha macro deberá
que otra persona pueda alterar el diseño de nuestro definir un nombre de rango para los datos capturados
diálogo. Para ocultarla siga éste procedimiento: (B3:B7). Se sugiere el nombre “TRABAJADOR”
 Seleccione la pestaña que contiene el nombre de la
hoja de diálogo que usted diseñó.
 En la barra de menús, en el menú Formato, haga
clic en el submenú Columna en la opción Ocultar.

 Si desea volver a mostrar dicha hoja, haga clic en


la opción Mostrar.

Nombre de la Macro: CAPTURA


SECUENCIA DE GRABACION CODIGO VISUAL (Ya modificado)
1. F5-INICIO_CAPTURA Enter
Sub CAPTURA()
2.  - TECLEAR NOMBRE - Enter ' CAPTURA Macro
' Macro grabada el 09/12/2004 por CNCYC
3. Herramientas > Macro > Macros '
RESP = vbYes
Seleccionar macro DIALOGO Do While RESP = vbYes
Ejecutar.
Application.Goto Reference:="INICIO_CAPTURA"
4. Seleccionar valores en la Hoja de ActiveCell.Offset(2, 1).Range("A1").Select
Dialogo Aceptar NOMBRE = InputBox("TECLEA EL NOMBRE")
ActiveCell.FormulaR1C1 = NOMBRE
5. F5 -TRABAJADOR – Enter Application.Run "'HOJAS DE DIALOGO.xls'!DIALOGO"
Application.Goto Reference:="TRABAJADOR"
6. CTRL+C
Selection.Copy
7. F5 - A9 - Enter Application.Goto Reference:="R9C1"
Selection.End(xlDown).Select
8. FIN -  ActiveCell.Offset(1, 0).Range("A1").Select
9. Edición > Pegado Especial Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 Valores  Transponer Aceptar :=False, Transpose:=True
Application.CutCopyMode = False
10. ESC RESP = MsgBox("¿DESEAS CAPTURAR OTRO NOMBRE?", vbYesNo)
Loop
11. F5 - A1 - Enter
Application.Goto Reference:="R1C1"
12. Finalizar Grabación End Sub

40 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

Anexos

En éste apartado se describen los procedimientos de grabación, códigos y


modificaciones de código para cada uno de los ejercicios realizados durante el
curso como una guía de apoyo didáctico para el participante. Le invitamos a
consultarlos si le es necesario al realizar sus ejercicios.

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 41


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

42 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

ANEXO 1. EJERCICIOS DE EXCEL AVANZADO


EJERCICIO 1:
Crear una macro que capture MATRICULA, NOMBRE, PUESTO y SUELDO del trabajador y los coloque al final de
una lista, y al terminar nos regrese a la primera celda de la hoja.

Procedimiento:
Nombre de la Macro: Macro_Ejercicio1

Secuencia de grabación:
1. F5 - A1 - Enter
2. FIN 
3. TECLEAR MATRICULA - Enter ( "1" )
4. TECLEAR NOMBRE - Enter ( "JUAN" )
5.  TECLEAR PUESTO - Enter ( "MATEMATICO" )
6. TECLEAR SUELDO - Enter ( "10000" )
7. F5 - A1 - Enter
8. Detener Grabación

Código Visual Basic: Codigo Visual Basic Modificado:


Sub MACRO_EJERCICIO1( ) El código ya modificado con la instrucción InputBox de
Visual Basic queda de la forma siguiente:
Application.Goto Reference:="R1C1"
Sub MACRO_EJERCICIO1()
Selection.End(xlDown).Select Application.Goto Reference:="R1C1"
ActiveCell.Offset(1, 0).Range("A1").Select Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = “1” ActiveCell.Offset(1, 0).Range("A1").Select
MATRI = InputBox("TECLEA MATRÍCULA DEL TRABAJADOR")
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = MATRI
ActiveCell.FormulaR1C1 = “JUAN” ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Offset(0, 1).Range("A1").Select NOMBRE = InputBox("TECLEA NOMBRE DEL TRABAJADOR")
ActiveCell.FormulaR1C1 = NOMBRE
ActiveCell.FormulaR1C1 = “MATEMATICO”
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Offset(0, 1).Range("A1").Select PUESTO = InputBox("TECLEA PUESTO DEL TRABAJADOR")
ActiveCell.FormulaR1C1 = “10000” ActiveCell.FormulaR1C1 = PUESTO
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R1C1"
SUELDO = InputBox("TECLEA SUELDO DEL TRABAJADOR")
End Sub ActiveCell.FormulaR1C1 = SUELDO
Application.Goto Reference:="R1C1"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 43


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

EJERCICIO 2:
Crear una macro para capturar MATRÍCULA, NOMBRE, CATEGORIA, SUELDO, NIVEL ACADEMICO Y EDO. CIVIL del
trabajador en el rango de B2:B7, después copiar estos datos y colocarlos al final de la lista.

Procedimiento:

Nombre de Macro: "Macro_Ejercicio2"


Nota: Antes de proceder al grabado de la macro deberá definirse
un nombre de rango para los datos capturados B2:B7): "DATOS1"

Secuencia de grabación:
1. F5 - A1 - Enter
2.   TECLEAR MATRICULA - Enter ( "1" )
3.  - TECLEAR NOMBRE - Enter ( "JUAN" )
4.  - TECLEAR CATEGORIA - Enter ( "52" )
5.  - TECLEAR SUELDO - Enter ( "9800" )
6.  - TECLEAR NIVEL ACADÉMICO - Enter
( "LICENCIATURA" )
7.  - TECLEAR ESTADO CIVIL - Enter
( "CASADO" )
8. F5 - DATOS_1 - Enter
(DATOS_1 es el nombre de rango B2:B7
definido previamente)
9. Edición > Copiar (CTRL+C)
10. F5 - A9 - Enter
11. FIN  
12. Edición > Pegado Especial
 Valores  Transponer Aceptar.
13. ESC
14. F5 - A1 - Enter

44 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

Código Visual Basic: Código Visual Basic modificado:


El código ya modificado con la instrucción InputBox de
Sub MACRO_EJERCICIO2()
Visual Basic queda de la forma siguiente:
Application.Goto Reference:="R1C1"
Sub MACRO_EJERCICIO2()
ActiveCell.Offset(1, 1).Range("A1").Select
Application.Goto Reference:="R1C1"
ActiveCell.FormulaR1C1 = "1"
ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.Offset(1, 1).Range("A1").Select

ActiveCell.FormulaR1C1 = "JUAN" NOMBRE = InputBox("TECLEA EL NOMBRE")


ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = NOMBRE
ActiveCell.FormulaR1C1 = "N52" ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Offset(1, 0).Range("A1").Select MATRICULA = InputBox("TECLEA LA MATRICULA")
ActiveCell.FormulaR1C1 = "9800" ActiveCell.FormulaR1C1 = MATRICULA
ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "LICENCIATURA" CATEGORIA = InputBox("TECLEA CATEGORIA O NIVEL")
ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = NIVEL
ActiveCell.FormulaR1C1 = "CASADO" ActiveCell.Offset(1, 0).Range("A1").Select
Application.Goto Reference:="DATOS_1" SUELDO = InputBox("TECLEA EL SUELDO")
Selection.Copy ActiveCell.FormulaR1C1 = SUELDO
Application.Goto Reference:="R9C1" ActiveCell.Offset(1, 0).Range("A1").Select
Selection.End(xlDown).Select NIVEL_ACADEMICO=InputBox("TECLEA NIVEL ACADEMICO")
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = NIVEL_ACADEMICO
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
ActiveCell.Offset(1, 0).Range("A1").Select
SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False ESTADO_CIVIL = InputBox("TECLEA ESTADO CIVIL")

Application.Goto Reference:="R1C1" ActiveCell.FormulaR1C1 = ESTADO_CIVIL


End Sub Application.Goto Reference:="DATOS_1"
Selection.Copy
Application.Goto Reference:="R9C1"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R1C1"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 45


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

EJERCICIO 3:
Crear una macro para generar una factura. La macro genera el número consecutivo de la factura; limpia los datos
del cliente anterior y todos los productos que se llevó; luego, pide el Nombre del Cliente, así como su Dirección.
Enseguida ingresa el nombre del producto, el precio, la cantidad, y realiza operaciones para calcular el subtotal, el
IVA y Total, y los suma al total a pagar. Al final este total a pagar lo acumula en un total global.

PROCEDIMIENTO:
Nombre de Macro: "Macro_Ejercicio3"

Nota: Antes de proceder al grabado de la macro deberá hacer lo siguiente:

 Definir un nombre para el rango B4:B5 ("CLIENTE") que corresponde a los datos del cliente y otro para
el rango A8:F15 (“PRODUCTOS”) correspondiente a los productos vendidos.

 Para el registro de fecha y hora en que se emite la factura colocar en B2 la función =HOY() y en D2 la
función =AHORA() con formato de hora.

 Para generar el consecutivo de la factura colocar un número 1 en la celda F1.

 Para el cálculo del total de la factura colocar en F16 la formula: =SUMA(F8:F15)

SECUENCIA DE GRABACIÓN:

1. F5 - A1 - Enter 14. FIN 


2. F5 - CLIENTE - Enter 15. TECLEAR ARTÍCULO - Enter
3. SUPR 16.  TECLEAR PRECIO - Enter
4. F5 - PRODUCTOS - Enter 17.  TECLEAR CANTIDAD - Enter
5. SUPR 18.  =  *  Enter
6. F5 - F1 - Enter 19.  =  * 0.15 Enter
7. CTRL+C 20.  =  +  Enter
8.  Edición > Pegado Especial 21. F5 - F16 - Enter
 Valores  Sumar – Aceptar 22. CTRL+C
9. ESC 23. F5 - H3 - Enter
10. F5 - B4 - Enter 24. Edición > Pegado Especial
11. TECLEA NOMBRE CLIENTE - Enter  Valores  Sumar Aceptar
12.  TECLEA DIRECCION 25. ESC
CLIENTE - Enter 26. F5 - A1 – Enter
13. F5 - A6 – Enter 27. Detener Grabación

46 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

Código Visual Basic: Código Visual Basic modificado:


Sub MACRO_EJERCICIO3() El código ya modificado con la instrucción InputBox de
Application.Goto Reference:="R1C1" Visual Basic queda de la forma siguiente:
Application.Goto Reference:="CLIENTE"
Sub MACRO_EJERCICIO3()
Selection.ClearContents
Application.Goto Reference:="R1C1"
Application.Goto Reference:="PRODUCTOS"
Application.Goto Reference:="CLIENTE"
Selection.ClearContents
Selection.ClearContents
Application.Goto Reference:="R1C6"
Application.Goto Reference:="PRODUCTOS"
Selection.Copy
Selection.ClearContents
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Goto Reference:="R1C6"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _
Selection.Copy
:=False, Transpose:=False
ActiveCell.Offset(1, 0).Range("A1").Select
Application.CutCopyMode = False
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _
Application.Goto Reference:="R4C2"
:=False, Transpose:=False
ActiveCell.FormulaR1C1 = "JUAN LEON"
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Goto Reference:="R4C2"
ActiveCell.FormulaR1C1 = "TLALPAN 23"
CLIENTE = InputBox("TECLEA EL NOMBRE DEL CLIENTE")
Application.Goto Reference:="R6C1"
ActiveCell.FormulaR1C1 = CLIENTE
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Offset(1, 0).Range("A1").Select
DIRECCION = InputBox("TECLEA DIRECCION DEL CLIENTE")
ActiveCell.FormulaR1C1 = "BALATAS"
ActiveCell.FormulaR1C1 = DIRECCION
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R6C1"
ActiveCell.FormulaR1C1 = "4"
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "50"
PRODUCTO = InputBox("TECLEA EL PRODUCTO")
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = PRODUCTO
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Offset(0, 1).Range("A1").Select
CANTIDAD = InputBox("TECLEA LA CANTIDAD")
ActiveCell.FormulaR1C1 = "=RC[-1]*15%"
ActiveCell.FormulaR1C1 = CANTIDAD
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
PRECIO = InputBox("TECLEA EL PRECIO")
Application.Goto Reference:="R16C6"
ActiveCell.FormulaR1C1 = PRECIO
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R3C8"
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _
ActiveCell.Offset(0, 1).Range("A1").Select
:=False, Transpose:=False
ActiveCell.FormulaR1C1 = "=RC[-1]*15%"
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R1C1"
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub
Application.Goto Reference:="R16C6"
Selection.Copy
Application.Goto Reference:="R3C8"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="R1C1"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 47


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

EJERCICIO 4:
Crear una macro que nos pida MATRICULA, NOMBRE, PUESTO y SUELDO del trabajador y los coloque al final
de la lista, y que al terminar nos pregunte si deseamos seguir capturando mas datos, si contestamos que si,
entonces que nos pida nuevamente los datos para capturar, pero si contestamos que no, que termine la macro.

Consulte la figura del Ejercicio 1

PROCEDIMIENTO:
Nombre de la Macro: Macro_Ejercicio4
El procedimiento de grabación y código son similares al ejercicio 1 como a continuación observamos:
Nota: Antes de proceder al grabado de la macro
deberá definirse un nombre de rango para los datos capturados (B2:B7): "DATOS_2"

SECUENCIA DE GRABACIÓN: Código Visual Basic modificado:


1. F5 - A1 - Enter El código deberá modificarse con las instrucciones
InputBox, Do While y MsgBox quedando de la forma
2. FIN 
siguiente:
3. TECLEAR MATRICULA - Enter ( "1" )
4. TECLEAR NOMBRE - Enter ( "JUAN" ) Sub MACRO_EJERCICIO1()
RESPUESTA = vbYes
5.  TECLEAR PUESTO - Enter ( "MATEMATICO" )
Do While RESPUESTA = vbYes
6. TECLEAR SUELDO - Enter ( "10000" )
Application.Goto Reference:="R1C1"
7. F5 - A1 – Enter
Selection.End(xlDown).Select
8. Detener Grabación
ActiveCell.Offset(1, 0).Range("A1").Select
MATRI = InputBox("TECLEA MATRÍCULA DEL TRABAJADOR")
ActiveCell.FormulaR1C1 = MATRI
Código Visual Basic: ActiveCell.Offset(0, 1).Range("A1").Select
NOMBRE = InputBox("TECLEA NOMBRE DEL TRABAJADOR")
Sub MACRO_EJERCICIO4( ) ActiveCell.FormulaR1C1 = NOMBRE
Application.Goto Reference:="R1C1" ActiveCell.Offset(0, 1).Range("A1").Select

Selection.End(xlDown).Select PUESTO = InputBox("TECLEA PUESTO DEL TRABAJADOR")


ActiveCell.FormulaR1C1 = PUESTO
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = “1” SUELDO = InputBox("TECLEA SUELDO DEL TRABAJADOR")
ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = SUELDO
ActiveCell.FormulaR1C1 = “JUAN” RESPUESTA = MsgBox("¿DESEAS CAPTURAR MAS DATOS?", vbYesNo)
ActiveCell.Offset(0, 1).Range("A1").Select Loop
Application.Goto Reference:="R1C1"
ActiveCell.FormulaR1C1 = “MATEMATICO”
End Sub
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = “10000”
Application.Goto Reference:="R1C1"
End Sub

48 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

EJERCICIO 5:
Crear una macro que nos pida MATRICULA, NOMBRE, CATEGORIA, SUELDO, NIVEL ACADEMICO y ESTADO
CIVIL del trabajador y los coloque en el rango B2:B7, luego que nos pida comprobar si están bien los datos, si
están mal que los vuelva a pedir, si están bien que los copie y los coloque al final de la lista, y al terminar nos
pregunte si deseamos seguir capturando mas datos, si contestamos que si, que nos pida nuevamente los datos
para capturar, pero si contestamos que no, que termine la macro.

PROCEDIMIENTO:
Nombre de la Macro: Macro_Ejercicio5
El procedimiento de grabación y código son similares al ejercicio 2 como a continuación observamos:
Nota: Antes de proceder al grabado de la macro deberá definirse
un nombre de rango para los datos capturados (B2:B7): "DATOS_2"

SECUENCIA DE GRABACIÓN: Código Visual Basic


1. F5 - A1 - Enter Sub MACRO_EJERCICIO5()
2.  TECLEAR MATRICULA - Enter ( "1" ) Application.Goto Reference:="R1C1"
ActiveCell.Offset(1, 1).Range("A1").Select
3.  -TECLEAR NOMBRE - Enter ( "JUAN" )
ActiveCell.FormulaR1C1 = "1"
4.  -TECLEAR CATEGORIA - Enter ( "52" ) ActiveCell.Offset(1, 0).Range("A1").Select
5.  -TECLEAR SUELDO - Enter ( "9800" ) ActiveCell.FormulaR1C1 = "JUAN"
ActiveCell.Offset(1, 0).Range("A1").Select
6.  -TECLEAR NIVEL ACADÉMICO - Enter
ActiveCell.FormulaR1C1 = "52"
( "LICENCIATURA" )
ActiveCell.Offset(1, 0).Range("A1").Select
7.  - TECLEAR ESTADO CIVIL - Enter ActiveCell.FormulaR1C1 = "9800"
( "CASADO" )
ActiveCell.Offset(1, 0).Range("A1").Select
8. F5 - DATOS_1 – Enter ActiveCell.FormulaR1C1 = "LICENCIATURA"
(DATOS_1 es el nombre de rango B2:B7 ActiveCell.Offset(1, 0).Range("A1").Select
definido previamente)
ActiveCell.FormulaR1C1 = "CASADO"
9. Edición > Copiar (CTRL+C) Application.Goto Reference:="DATOS_2"
10. F5 - A9 - Enter Selection.Copy
Application.Goto Reference:="R9C1"
11. FIN  
Selection.End(xlDown).Select
12. Edición > Pegado Especial ActiveCell.Offset(1, 0).Range("A1").Select
 Valores  Transponer Aceptar. Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
13. ESC SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
14. F5 - A1 - Enter
Application.Goto Reference:="R1C1"
15. Detener Grabación End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 49


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Código Visual Basic modificado


El código deberá modificarse con las instrucciones InputBox, Do While y MsgBox quedando de la forma
siguiente:

Sub MACRO_EJERCICIO5()
RESPUESTA1 = vbYes
Do While RESPUESTA1 = vbYes
RESPUESTA2 = vbNo
Do While RESPUESTA2 = vbNo
Application.Goto Reference:="R1C1"
ActiveCell.Offset(1, 1).Range("A1").Select
NOMBRE = InputBox("TECLEA EL NOMBRE")
ActiveCell.FormulaR1C1 = NOMBRE
ActiveCell.Offset(1, 0).Range("A1").Select
MATRICULA = InputBox("TECLEA LA MATRICULA")
ActiveCell.FormulaR1C1 = MATRICULA
ActiveCell.Offset(1, 0).Range("A1").Select
CATEGORIA = InputBox("TECLEA LA CATEGORIA O NIVEL")
ActiveCell.FormulaR1C1 = NIVEL
ActiveCell.Offset(1, 0).Range("A1").Select
SUELDO = InputBox("TECLEA EL SUELDO")
ActiveCell.FormulaR1C1 = SUELDO
ActiveCell.Offset(1, 0).Range("A1").Select
NIVEL_ACADEMICO = InputBox("TECLEA EL NIVEL ACADEMICO")
ActiveCell.FormulaR1C1 = NIVEL_ACADEMICO
ActiveCell.Offset(1, 0).Range("A1").Select
ESTADO_CIVIL = InputBox("TECLEA EL ESTADO CIVIL")
ActiveCell.FormulaR1C1 = ESTADO_CIVIL
RESPUESTA2 = MsgBox("¿TUS DATOS SON CORRECTOS?", vbYesNo)
Loop
Application.Goto Reference:="DATOS_2"
Selection.Copy
Application.Goto Reference:="R9C1"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
RESPUESTA1 = MsgBox("¿DESEAS CAPTURAR MAS DATOS?", vbYesNo)
Loop
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R1C1"
End Sub

50 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

EJERCICIO 6:
Crear una macro para llenar esta factura. La macro genera el número consecutivo de la factura; limpia los datos
del cliente anterior y todos los productos que se llevó; luego, pide el nombre del cliente, así como su dirección.
luego nos pide comprobar si los datos del cliente son correctos, si están mal que nos vuelva a pedir los datos, si
están bien que avance para ingresar el nombre del PRODUCTO, el PRECIO, la CANTIDAD, y realiza operaciones
para calcular el SUBTOTAL, el IVA y TOTAL, al llegar al total individual nos pregunte si deseamos mas productos
para este cliente, si contestamos que si, que nos vuelva a pedir producto, precio y cantidad, si contestamos que no
los suma al total a pagar. Al final este total a pagar lo acumula en un total global.

PROCEDIMIENTO:
Nombre de Macro: "Macro_Ejercicio6"

El procedimiento de grabación y código son similares al ejercicio 3 como a continuación observamos:


Nota: Antes de proceder al grabado de la macro deberá hacer lo siguiente

Definir un nombre para el rango B4:B5 ("CLIENTE_2") que corresponde a los datos del cliente y otro para el
rango A8:F15 (“PRODUCTOS_2”) correspondiente a los productos vendidos.
Para el registro de fecha y hora en que se emite la factura colocar en B2 la función =HOY() y en D2 la función
=AHORA() con formato de hora.
Para generar el consecutivo de la factura colocar un número 1 en la celda F1.
Para el cálculo del total de la factura colocar en F16 la formula: =SUMA(F8:F15)

SECUENCIA DE GRABACIÓN:

1. F5 - A1 - Enter 14. FIN 


2. F5 - F1 - Enter 15. TECLEAR ARTÍCULO - Enter
3. CTRL+C 16.  TECLEAR PRECIO - Enter
4.  Edición > Pegado Especial 17.  TECLEAR CANTIDAD - Enter
 Valores  Sumar – Aceptar 18.  =  *  Enter
5. ESC 19.  =  * 0.15 Enter
6. F5 - PRODUCTOS - Enter 20.  =  +  Enter
7. SUPR 21. F5 - F16 - Enter
8. F5 - CLIENTE - Enter 22. CTRL+C
9. SUPR 23. F5 - H3 - Enter
10. F5 - B4 - Enter 24. Edición > Pegado Especial
11. TECLEA NOMBRE CLIENTE - Enter  Valores Sumar Aceptar
12.  TECLEA DIRECCION 25. ESC
CLIENTE - Enter 26. F5 - A1 - Enter
13. F5 - A6 – Enter 27. Detener Grabación

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 51


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Código Visual Basic Código Visual Basic Modificado


Sub MACRO_EJERCICIO6() El código deberá modificarse con las instrucciones
Application.Goto Reference:="R1C1" InputBox, Do While y MsgBox de la forma siguiente:
Application.Goto Reference:="R1C6"
Sub MACRO_EJERCICIO6()
Selection.Copy
Application.Goto Reference:="R1C1"
ActiveCell.Offset(1, 0).Range("A1").Select
Application.Goto Reference:="R1C6"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _ Selection.Copy
:=False, Transpose:=False ActiveCell.Offset(1, 0).Range("A1").Select
Application.CutCopyMode = False Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _
Application.Goto Reference:="PRODUCTOS_2" :=False, Transpose:=False
Selection.ClearContents Application.CutCopyMode = False
Application.Goto Reference:="CLIENTE_2" Application.Goto Reference:="PRODUCTOS_2"
Selection.ClearContents Selection.ClearContents
Application.Goto Reference:="R4C2" CORRECTOS = vbNo
ActiveCell.FormulaR1C1 = "JUAN LEON" Do While CORRECTOS = vbNo
Application.Goto Reference:="CLIENTE_2"
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "TLALPAN 23"
Application.Goto Reference:="R4C2"
Application.Goto Reference:="R6C1"
CLIENTE = InputBox("TECLEA NOMBRE DEL CLIENTE")
Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = CLIENTE
ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "BALATAS" DIRECCION = InputBox("TECLEA DIRECCION DEL CLIENTE")
ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = DIRECCION
ActiveCell.FormulaR1C1 = "4" CORRECTOS = MsgBox(“¿LOS DATOS SON CORRECTOS?”,vbYesNo)
ActiveCell.Offset(0, 1).Range("A1").Select Loop
ActiveCell.FormulaR1C1 = "50" RESPUESTA = vbYes
ActiveCell.Offset(0, 1).Range("A1").Select Do While RESPUESTA = vbYes
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]" Application.Goto Reference:="R6C1"
ActiveCell.Offset(0, 1).Range("A1").Select Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = "=RC[-1]*15%" ActiveCell.Offset(1, 0).Range("A1").Select
PRODUCTO = InputBox("TECLEA EL PRODUCTO")
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = PRODUCTO
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R16C6"
CANTIDAD = InputBox("TECLEA LA CANTIDAD")
Selection.Copy
ActiveCell.FormulaR1C1 = CANTIDAD
Application.Goto Reference:="R3C8" ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _ PRECIO = InputBox("TECLEA EL PRECIO")
:=False, Transpose:=False ActiveCell.FormulaR1C1 = PRECIO
Application.CutCopyMode = False ActiveCell.Offset(0, 1).Range("A1").Select
Application.Goto Reference:="R1C1" ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
End Sub ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]*15%"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
RESPUESTA = MsgBox(“¿DESEAS INGRESAR MÁS PRODUCTOS?”,vbYesNo)
Loop
Application.Goto Reference:="R16C6"
Selection.Copy
Application.Goto Reference:="R3C8"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlAdd, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="R1C1"
End Sub

52 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

ANEXO 2. SISTEMA DE MACROS PARA EXCEL AVANZADO

HOJA MENU

PROCEDIMIENTO:
NOTA: Los nombres de la primera celda de cada hoja: INICIO_ALMACEN. INICIO_VENTAS, INICIO_FACTURAS,
INICIO_DERECHOS e INICIO_MENU deberán definirse antes de grabar cada una de las macros.

Los códigos de las macros asignadas a cada botón del menú son los siguientes

Sub A_ALMACEN()
' Macro para trasladarse a la hoja ALMACEN
Application.Goto Reference:="INICIO_ALMACEN"
End Sub

Sub A_VENTAS()
' Macro para trasladarse a la hoja VENTAS
Application.Goto Reference:="INICIO_VENTAS"
End Sub

Sub A_FACTURAS()
' Macro para trasladarse a la hoja FACTURAS
Application.Goto Reference:="INICIO_FACTURAS"
End Sub

Sub A_DERECHOS()
' Macro para trasladarse a la hoja DERECHOS
Application.Goto Reference:="INICIO_DERECHOS"
End Sub

Sub A_MENU()
' Macro para trasladarse a la hoja MENU
Application.Goto Reference:="INICIO_MENU"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 53


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

HOJA ALMACEN:
Debe definirse previamente un nombre (“PRODUCTOS”) para el rango que contendrá la lista de datos de almacén.
Se sugiere establecer un rango para ingresar por lo menos 500 productos (A2:D503)
1. MACRO PARA AGREGAR NUEVOS PRODUCTOS:
Nombre de macro: NUEVO

PROCEDIMIENTO:
Se debe definir antes un nombre (“PRODUCTO_NUEVO”) para el área de productos adquiridos: (G5:G8)

El código de la macro que agrega nuevos productos al almacén ya modificado queda de la forma siguiente:

Sub NUEVO()
' NUEVO - Macro que permite agregar nuevos productos al almacén.

Application.Goto Reference:="INICIO_ALMACEN"
RESP = vbYes
Do While RESP = vbYes
Application.Goto Reference:="R5C7"
CLAVE = InputBox("ESCRIBE LA CLAVE")
ActiveCell.FormulaR1C1 = CLAVE
ActiveCell.Offset(1, 0).Range("A1").Select
PRODUCTO = InputBox("ESCRIBE NOMBRE DE PRODUCTO")
ActiveCell.FormulaR1C1 = PRODUCTO
ActiveCell.Offset(1, 0).Range("A1").Select
PRECIO = InputBox("ESCRIBE PRECIO DEL PRODUCTO")
ActiveCell.FormulaR1C1 = PRECIO
ActiveCell.Offset(1, 0).Range("A1").Select
CANT = InputBox("TECLEA LA CANTIDAD COMPRADA")
ActiveCell.FormulaR1C1 = CANT
Application.Goto Reference:="PRODUCTO_NUEVO"
Selection.Copy
Application.Goto Reference:="R1C1"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
RESP = MsgBox("¿DESEAS CAPTURAR OTRO PRODUCTO?", vbYesNo)
Loop
Application.Goto Reference:="R1C1"
End Sub

54 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

2. MACRO PARA ACTUALIZAR EXISTENCIAS EN ALMACEN (NUEVAS COMPRAS)


NOTA: Antes de proceder al grabado de la macro colocar funciones de búsqueda en G11, G12 y G13 que permitan
consultar desde la base de datos el nombre, precio y existencia del producto que corresponde a la clave dada:

=BUSCARV(G10,PRODUCTOS,2,FALSO)
=BUSCARV(G10,PRODUCTOS,3,FALSO)
=BUSCARV(G10,PRODUCTOS,4,FALSO)
El código ya modificado de la macro que actualiza existencias en almacén queda de la forma siguiente:

Sub ACTUALIZAR()
' Macro que actualiza existencias en Almacen
Application.Goto Reference:="INICIO_ALMACEN"
RESPUESTA = vbYes
Do While RESPUESTA = vbYes
RESPUESTA2 = vbNo
Do While RESPUESTA2 = vbNo
Application.Goto Reference:="R10C7"
CLAVE = InputBox("FAVOR DE TECLEAR LA CLAVE")
ActiveCell.FormulaR1C1 = CLAVE
Application.Goto Reference:="R14C7"
COMPRA = InputBox("FAVOR DE TECLEAR CANTIDAD COMPRADA")
ActiveCell.FormulaR1C1 = COMPRA
RESPUESTA2 = MsgBox("¿EL DATO ES CORRECTO?", vbYesNo)
Loop
Selection.Copy
Application.Goto Reference:="R1C1"
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="R14C7"
Selection.ClearContents
MsgBox "¡EL PRODUCTO SE HA ACTUALIZADO!", vbOKOnly
RESPUESTA = MsgBox("¿DESEA ACTUALIZAR OTRO PRODUCTO?", vbYesNo)
Loop
Application.Goto Reference:="R1C1"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 55


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

3.- MACRO PARA BUSQUEDA DE PRODUCTOS EN ALMACEN:


NOTA: Este procedimiento permite hacer una búsqueda de un producto utilizando la clave o el nombre del mismo.
La clave y nombre se deberá pedir a través de un Input Box. Colocar antes en G17, G18 Y G19 fórmulas para la búsqueda
del NOMBRE, PRECIO y EXISTENCIA del producto que corresponde a la clave o nombre dados:

=BUSCARV(G16,PRODUCTOS,2,FALSO)
=BUSCARV(G16,PRODUCTOS,3,FALSO)
=BUSCARV(G16,PRODUCTOS,4,FALSO)
El código ya modificado de la macro para búsquedas en almacén queda de la forma siguiente:

Sub BUSQUEDA()
' Macro para realizar BUSQUEDAS en almacén.
Application.Goto Reference:="INICIO_ALMACEN"
CLAVE = InputBox("ESCRIBA LA CLAVE O NOMBRE DEL PRODUCTO BUSCADO")
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.End(xlToLeft).Select
Selection.Copy
Application.Goto Reference:="R16C7"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="R1C1"
End Sub

56 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

HOJA VENTAS:
PROCEDIMIENTO:
A.) Antes de iniciar asegurarse que ya existe un nombre (“PRODUCTOS”) para el rango de la lista de productos
que se encuentran en almacén. Si no es así deberá crearlo.

B.) Crear fórmulas de búsqueda en B4, B5 y B7 para saber el nombre del producto, precio y existencia:

PROCEDIMIENTO PARA HACER LA BUSQUEDA:


Colocarse en la celda donde se va a colocar el Nombre del producto.
Crear las formulas de búsqueda:
=BUSCARV(B3,PRODUCTOS,2,FALSO) Para el Producto
=BUSCARV(B3,PRODUCTOS,3,FALSO) Para el Precio
=BUSCARV(B3,PRODUCTOS,4,FALSO) Para la Existencia
El código Visual ya modificado de la macro para la hoja VENTAS queda de la forma siguiente:
Sub VENTA()
' Macro para realizar una VENTA
Application.Goto Reference:="INICIO_VENTAS"
RESP = vbYes
Do While RESP = vbYes
Application.Goto Reference:="R3C2"
CLAVE = InputBox("TECLEA LA CLAVE DEL PRODUCTO")
ActiveCell.FormulaR1C1 = CLAVE
CORRECTA = vbNo
Do While CORRECTA = vbNo
Application.Goto Reference:="R6C2"
CANT = InputBox("TECLEA LA CANTIDAD SOLICITADA")
ActiveCell.FormulaR1C1 = CANT
CORRECTA = MsgBox("¿LA CANTIDAD ES CORRECTA?", vbYesNo)
Loop
AUTORIZA = MsgBox("¿EL CLIENTE ACEPTA LA COMPRA?", vbYesNo)
If AUTORIZA = vbNo Then
Application.Goto Reference:="INICIO_VENTAS"
End
Else
Selection.Copy
Application.Goto Reference:="INICIO_ALMACEN"
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlSubtract, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="INICIO_VENTAS"
End If
RESP = MsgBox("¿DESEAS REGISTRAR OTRA VENTA?", vbYesNo)
Loop
Application.Goto Reference:="INICIO_VENTAS"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 57


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

HOJA FACTURAS:
PROCEDIMIENTO:
PRODUCTOS (Hoja Almacén A2:D503), ARTS_VENDIDOS (A9:G19); y CLIENTE (B4:B5) son nombres de rango
que tiene que definir con anterioridad. Además deberá poner un 1 en la celda F1 para inicializar el contador del
consecutivo. El código Visual ya modificado de la macro FACTURAR queda de la forma siguiente:
Sub FACTURAR()
' Macro para llenar una FACTURA
Application.Goto Reference:="INICIO_FACTURAS"
Application.Goto Reference:="R1C6"
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="ARTS_VENDIDOS"
Selection.ClearContents
CORRECTO = vbNo
Do While CORRECTO = vbNo
Application.Goto Reference:="CLIENTE"
Selection.ClearContents
Application.Goto Reference:="R4C2"
NOMBRE = InputBox("INTRODUCE NOMBRE DEL CLIENTE")
ActiveCell.FormulaR1C1 = NOMBRE
ActiveCell.Offset(1, 0).Range("A1").Select
DIRECCION = InputBox("INTRODUCE DIRECCION DEL CLIENTE")
ActiveCell.FormulaR1C1 = DIRECCION
CORRECTO = MsgBox("LOS DATOS DEL CLIENTE ¿SON CORRECTOS?", vbYesNo)
Loop
RESPUESTA = vbYes
Do While RESPUESTA = vbYes
Application.Goto Reference:="R7C1"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
CLAVE = InputBox("INTRODUCE LA CLAVE DEL PRODUCTO A VENDER")
ActiveCell.FormulaR1C1 = CLAVE
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],PRODUCTOS,2,FALSE)"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],PRODUCTOS,3,FALSE)"
ActiveCell.Offset(0, 1).Range("A1").Select
CANTIDAD = InputBox("INTRODUCE LA CANTIDAD A VENDER")
ActiveCell.FormulaR1C1 = CANTIDAD
Selection.Copy
Application.Goto Reference:="INICIO_ALMACEN"
Cells.Find(What:=CLAVE, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlSubtract, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="INICIO_FACTURAS"
Application.Goto Reference:="R7C1"
Selection.End(xlDown).Select
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]*15%"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
RESPUESTA = MsgBox("¿DESEAS AGREGAR OTRO PRODUCTO?", vbYesNo)

58 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

Loop
Application.Goto Reference:="R20C7"
Selection.Copy
Application.Goto Reference:="R2C9"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.Goto Reference:="R1C1"
End Sub

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 59


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

60 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS


AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL ANEXOS

Comentarios
Deseamos que el presente material de apoyo le haya facilitado el aprendizaje de los temas que componen cada
módulo de este evento y que le sea útil para futuras consultas.

Le felicitamos por haber concluido este curso de capacitación, continúe practicando; recuerde que su habilidad
dependerá del manejo cotidiano de esta paquetería.

Le invitamos a tomar el curso de Excel 2003 Intermedio, en el cual conocerá el uso de las Tablas Dinámicas,
Escenarios, Esquemas, Funciones de Bases de Datos, Solver, Buscar Objetivos, etc., dichas herramientas le
ayudarán a realizar mejor sus funciones laborales y personales, con Excel 2003 Avanzado, aprenderás a crear y
aplicar las macros de Excel, con esta herramienta podrás automatizar todos tus procesos de una manera eficaz,
atrévete a entrar al mundo maravilloso de la aplicación de las matemáticas en una hoja de cálculo.

La perseverancia nos lleva al ÉXITO

¡Capacítate!

CENTRO NACIONAL DE CAPACITACION Y CALIDADIMSS-SNTSS 61


ANEXOS AUTOMATIZACIÓN DE HOJAS DE CÁLCULO EN EXCEL

Bibliografía:

La BIBLIA de Microsoft Office 2003


Ed Bott
Woody Leonhard
Editorial Anaya Multimedia
País España
1084 Páginas
2005

Edición Especial Microsoft Office XP


ED BOTT y WOODY LEONHARD
Editorial Prentice Hall
País España
1344 Páginas
2004

Microsoft Excel 2003 Paso a Paso


C. Nossiter Joshua
Editorial Prentice Hall
País México
426 Páginas
2004

Excel 2003 Super Book


McFedries Paul
Editorial SAMS Publishing
País EEUU
1772 Páginas
2004

Obra literaria propiedad del:


Centro Nacional de Capacitación y Calidad IMSS-SNTSS
Elaborado por:
Eliseo Robles Hernández

62 CENTRO NACIONAL DE CAPACITACION Y CALIDAD IMSS-SNTSS

You might also like