Curso de Macros en Excel para Principiantes
Curso de Macros en Excel para Principiantes
1. Grabar macros.
Temario.
1.1. Macros.
1.2. Grabar y ejecutar.
1.3. Asignación de teclas a las
macros hechas.
II
5.3. Operador NOT.
Temario. (Cont.) 5.4. Macro para descuentos
de productos.
5.5. Agregando reglas del
negocio.
5.6. Cálculo de totales.
5.7. Macro para determinar
estados dados por
condiciones.
6. Ciclos iterativos.
6.1. Instrucciones para ciclos.
6.2. Partes de un ciclo.
6.3. Programación del
Método de centro de
gravedad.
6.4. Programación del cálculo
de mínimos cuadrados.
6.5. Macro para generar un
archivo por cada hoja de un
libro.
6.6. Macro para registrar un
proyecto.
7. Creando formularios y
programándolos.
7.1. Formularios en EXCEL.
7.2. Tipos de formularios.
7.3. Formulario para agregar
datos.
7.4. Operación cerrar
formulario.
III
8. Trabajando con fórmulas.
Temario. (Cont.) 8.1. Fórmulas y sus partes.
8.2. Familias de fórmulas en
EXCEL.
8.3. Operadores aritméticos.
8.4. Construcción de un
formulario para cálculos
específicos.
8.5. Formulario para sueldo
neto.
9. Buscando información a
partir de una Textbox.
9.1. Búsqueda de información
y el uso en EXCEL.
9.2. Formulario para buscar
datos.
9.3. Llamar un formulario por
medio de un control.
IV
Temario. (Cont.) 11. Uso de funciones.
11.1. Procedimientos y
funciones.
11.2. Crear una función para
realizar la conversión de
grados Fahrenheit a Celsius.
11.3. Crear una macro para
buscar el mínimo valor a
través de la función min.
11.4. Macros para generar
números aleatorios.
V
Práctica 1. Grabación de macros.
Conceptos.
Una macro está compuesta por una serie de instrucciones que se ejecutan secuencialmente para
realizar una tarea determinada. Estas instrucciones están escritas en lenguaje de programación, por
lo que para crear una macro deberemos de escribir el código necesario para realizar las instrucciones
deseadas. Las macros pueden aumentar muy considerablemente las posibilidades de muchas
aplicaciones y adaptarlas de una manera mucho más eficiente a necesidades específicas de sus
usuarios. En muchas aplicaciones que trabajan en entorno Windows (Microsoft Office entre otras
muchas) está disponible el editor de “Visual Basic for Applications” (VBA) para crear macros.
5) El nombre de la macro será “Macro1” y el método abreviado es Ctrl + la letra “a”. Dar un clic en
botón aceptar. Excel empezará a grabar todos los pasos.
6) Cambiar el tipo, tamaño y estilo de la
letra. Hay que recordar que todos estos
pasos están siendo almacenados en la
macro que estamos grabando y afectara a
cualquier celda dónde se coloque el
cursor.
7) Regresar a la pestaña “Vista” y localizar el
botón Macros.
8) Dar un clic en la flecha para desplegar la
lista de opciones. Dar un clic en la opción
“Detener grabación”.
9) Listo Excel guardo los pasos en la Macro1 que se activara presionado la tecla Control + a.
10) Escriba otro nombre en la celda C1 y presiona Enter, después regrese a la celda C1.
11) Presionar la tecla Control + a. Excel efectuará todos los pasos grabados sobre la celda C1. Esto
quiere decir, que el nombre que está en C1 tendrá las características idénticas al nombre de la
celda A1, tal como se indicó al grabar la macro.
1
12) Salir de Excel y volver a entrar, para que trabajar limpio sin ninguna macro y empezar con la
macro1 de nuevo para la siguiente práctica.
Para practicar…
2
Práctica 2. Esquema de código de una macro.
Conceptos.
Las aplicaciones de la familia de software de Microsoft Office tienen un editor de VBA integrado e
independiente. Excel tiene también este editor, con lo que podemos aumentar considerablemente
sus funcionalidades. Algunas de estas funcionalidades son:
Automatización de tareas y procesos que involucran muchos pasos. Imaginemos una tarea
rutinaria con Excel que hagamos a menudo y que involucre varios pasos (incluso decenas).
Una macro adecuada podría reducir esta rutina a un solo clic.
Creación de nuevas funciones a medida. Excel trae incorporadas unas 330 funciones
estándar. Sin embargo, suele suceder que justo la función que necesitamos no existe.
Mediante el uso de macros podemos programar funciones a medida y que hagan
exactamente lo que nosotros queremos. Estas nuevas funciones se comportarán igual que
las ya incorporadas por Excel (aparecerán en el menú de funciones en la categoría que
nosotros indiquemos, tendrán sus respectivos argumentos, etc.).
Creación de nuevos comandos, complementos y menús. Los complementos Excel también
están creados con macros. Si vamos a menú Herramientas > Complementos vemos una lista
de los que están instalados en nuestro Excel. Su utilidad reside en agregar alguna
funcionalidad extra al Excel.
Creación de completas aplicaciones a medida. Las macros nos pueden permitirán construir
complejas y elegantes aplicaciones para cualquier uso que queramos.
Ejercicio 2.1. Crear una macro.
3
Para crear una nueva macro escribimos
en el cuadro debajo de “Nombre de la
macro”. Le ponemos de nombre
“MiMacro” y le damos a crear.
4) Regresar a la hoja 1 del libro de Excel. Guardar el libro con el nombre de “LibroConMacro”.
Ubicarse en la celda A1, escribe su nombre y presiona Enter.
5) Regresar al editor VBA y escribir el código Dim strnombre As String
que se encuentra abajo para que el Dim strrespuesta As String
programa pida que introduzca su nombre strnombre = InputBox ("¿Cómo te
por el teclado y le de la respuesta en un llamas?", "Saludo")
mensaje de texto. El código se deberá de strrespuesta = MsgBox ("Hola" &
escribir entre las instrucciones Sub y End strnombre, vbExclamation,
Sub. "Saludo")
4
7) Salir de Excel y volver a entrar, para que trabajar limpio sin ninguna macro y empezar con la
macro1 de nuevo para la siguiente práctica.
Para practicar…
5
Creamos el botón en la celda
C3. Al crearlo vemos que se
abre la ventana de macros
con las dos macros creadas
anteriormente (MiMacro y
MiMacro2), y vemos que a su
vez ha puesto un nuevo
nombre
(Botón2_Haga_clic_en) por si
queremos crear una nueva
macro con ese nombre. Para
nuestro objetivo, le
asignaremos la última macro
creada (MiMacro2) y le
damos a aceptar. Al ejecutar
la nueva instrucción
podemos ver el resultado.
6
Práctica 3. Tipos de variables en VBA.
Conceptos.
Uno de los conceptos más importantes y a la vez más básicos en programación es el concepto de
variable. Podemos considerar que una variable es un espacio en la memoria del ordenador que se
usa para guardar datos, es una especie de contenedor o caja donde guardaremos datos
temporalmente para poder acceder a ellos. Dependiendo del tipo de datos que queramos guardar,
la variable será de un tipo u otro.
Para crear una variable en VBA, primero tenemos que “dimensionarla”, es decir darle forma. En VB
esto se hace mediante la instrucción Dim:
En el nivel más básico de programación, las variables que se crean se usan para guardar números y
caracteres. Dependiendo del tipo que número, longitud de la cadena de texto, etc., utilizaremos
unos tipos u otros de variables. En el siguiente ejemplo declararemos dos variables:
Numero1 = 1
Las variables principales que podemos crear en VBA están contenidas en la siguiente tabla:
El nombre de una variable debe de comenzar por una letra, puede tener hasta 255 caracteres, y
debe de ser único en su ámbito.
7
1) Vamos a comenzar esta práctica
importando datos. Para ello abra
Excel el archivo [Link].
8
5) Crearemos una macro en blanco. Para hacer esto vamos a la pestaña Vista – Macros,
aunque también podemos entrar desde la ficha de Desarrollador – Macros, y aún tenemos
otro modo de entrar con Alt+F11. En la ventana nos aparecerán las macros que hemos
creado en el documento.
6) Escribimos en el cuadro debajo de “Nombre de la macro”. Le ponemos de nombre
“insertarcolumna” y le damos a crear. Esta macro servirá para insertar una columna después
de la columna D para reflejar el subtotal.
9) Ahora crearemos una pestaña con las dos macros hechas. Vamos a Opciones de Excel (botón
derecho en lugar vacío en barra de Menú) y vamos a la opción de Personalizar cinta de
opciones, damos un clic en el botón “Nueva pestaña”. Aparecerá una nueva pestaña con un
grupo nuevo.
10) Seleccionamos la nueva pestaña, clic derecho del mouse y escogemos la opción cambiar de
nombre. Se activará un cuadro de texto en el que colocamos el nombre de “Macros” y
damos clic en el botón aceptar.
9
11) Después hacemos lo mismo con el
grupo, de igual forma le cambiamos el
nombre a “Formato”.
12) Luego vamos a la otra lista
“Comandos disponibles en:” y damos
un clic en la flecha, buscamos
“Macros”, escogemos la primera
macro y damos un clic en el botón
agregar. Se insertará la primera
macro en la pestaña y grupo que
creamos. Lo mismo se repite para la
segunda macro.
13) Dar un clic en el botón aceptar y la
pestaña se hará visible con todas las
demás.
10
Para practicar…
11
Práctica 4. Instrucciones if … else (Si … entonces).
Conceptos.
La instrucción If…Then permite escoger entre 2 o más posibilidades. Esta instrucción ejecuta
condicionalmente un grupo de instrucciones, dependiendo del valor (verdadero/falso) resultante
de una expresión. Su sintaxis es:
Donde:
Ejercicio 4.1. Crear una macro para determinar el IVA con un if.
Abrimos un libro nuevo y creamos una macro llamada Macro1. En esta macro vamos a definir 3
variables; Precio (doble), Cantidad (entera) y PrecioT (doble). Les asignaremos valores a Precio y
Cantidad con dos InputBox. Calcularemos PrecioT como el producto de ambas. Sí PrecioT es mayor
que 500 le aplicaremos el 15% de IVA. Visualizaremos el precio total en una MsgBox.
12
Ejercicio 4.2. Crear una macro para determinar el IVA con un if… else.
Repetir el ejercicio 4.1. Pero ahora si el precio total es mayor de 500 aplicaremos un 20% de IVA, si
está entre 500 y 250 un 15%, y si es menor de 250 un 10%. Visualizaremos el precio total con una
MsgBox.
Ejercicio 4.3. Crear una macro para leer los valores desde una celda.
Recuerda:
Repetir el ejercicio 4.2. Ahora hay que leer los Para darle a una celda el valor de una variable:
valores de cantidad y precio de las celdas A1,
Range(“Celda”).Value = Variable
y B1. Escribir el precio total en la celda C1.
Para darle a una variable el valor de una celda:
Variable = Range(“Celda”).Value
Para practicar…
Generar una macro que presente en la celda A1 un saludo personalizado de forma que si la
hora es anterior a las 12 del día se refleje el mensaje
“Buenos días Sr X hoy es dia de mes del 20xx”
Solicitar el nombre del usuario por miarray(9) = "septiembre"
teclado, el día, el mes (con nombre) y miarray(10) = "octubre"
el año deberá sacarlo del sistema. miarray(11) = "noviembre"
Crear la macro con el siguiente miarray(12) = "diciembre"
código: 'solicitamos el nombre del usuario
por teclado y lo guardamos en la
Sub saludo_personalizado()
variable nombre
'Declaramos las variables que
nombre = InputBox ("Introduzca
vamos a necesitar
nombre de usuario", "Saludo")
Dim nombre, parte As String
'asignamos a las variables dia, mes,
Dim dia, mes, año, i As Byte
año y hora actual las del sistema
Dim horaactual As Date
dia = Day(Date)
'declaramos la matriz y le asignamos
mes = Month(Date)
los nombres
año = Year(Date)
Dim miarray(12) As String
horaactual = Hour(Now)
miarray(1) = "enero"
'relacionamos el índice de nuestra
miarray(2) = "febrero"
matriz con el nº del mes del sistema
miarray(3) = "marzo"
i = mes
miarray(4) = "abril"
miarray(5) = "mayo"
'Si la hora actual es inferior a las 12
miarray(6) = "junio"
entonces
miarray(7) = "julio"
If horaactual < 12 Then
miarray(8) = "agosto"
parte = "Buenos dias"
13
Cells (1, 1) = parte & " " & nombre &
'en caso contrario " " & "hoy es " & dia & " de " &
Else miarray(i) & " del " & año
parte = "Buenas tardes" End Sub
End If
14
Práctica 5. Operadores lógicos AND, OR y NOT.
Conceptos.
Cuando queremos evaluar más de una condición a la vez, podemos utilizar los operadores lógicos
AND, OR, y NOT.
AND: (Y Lógico) condición1 AND condición2. El resultado es verdadero si y sólo si las dos
condiciones son verdaderas. Ejemplo:
OR: (O Lógico) condición1 OR condicion2. El resultado es verdadero cuando una de las dos
condiciones (o las dos a la vez) sea verdadera. Ejemplo:
NOT: (No lógico) NOT condición. El resultado es verdadero cuando la condición sea falsa.
Ejemplo:
Abrimos un libro nuevo y creamos una macro llamada Ventas. En esta macro vamos a definir 3
variables: producto, cantidadVendida y precioAlPublico, las cuales se les dará un valor desde una
InputBox. Los valores asignados a cada variable se guardarán respectivamente en las celdas A1, B1
y C1. La macro calculará el total de la venta y lo guardará en la celda D1, usando la siguiente regla
de negocio: “Si el total es superior a 10.000 y el nombre del producto es ‘Reloj’, pedir un descuento,
calcular el total del descuento y guardarlo en E1, luego restar el descuento del total y guardarlo en
F1”. Se debe usar un operador lógico AND.
En base al ejercicio 5.1, agregar la siguiente regla de negocios a la ya existente: “Si el total es superior
a 10.000 o el nombre del producto el "pulsera", pedir un descuento; calcular el total del descuento
y guardarlo en E1, luego restar el descuento del total y guardarlo en F1”. Utilizar un operador lógico
OR.
Ahora crearemos una macro que recoja los valores de precio y cantidad, en las columnas A y B.
Después, la macro calculará el total aplicando el mismo IVA que en el ejercicio 4.2, y escribirá los
15
resultados en la columna C. Podrás copiar partes de código (Ctrl + c) y pegar (Ctrl + v), como si se
tratase de texto normal.
Para practicar…
16
Práctica 6. Ciclos iterativos.
Conceptos.
La estructura Do While en VBA o también conocida como Do Loop en VBA sirve para repetir un
conjunto de instrucciones. Si bien For en VBA también permite repetir algunas instrucciones, la
principal diferencia radica en que en el caso del For se conoce de forma precisa el número de veces
que se ejecutará un conjunto de instrucciones, en el caso del Do While en VBA no se conoce el
número de veces que la instrucción de va a repetir, estas instrucciones se repetirán hasta el
momento en que se cumpla alguna condición. La sintaxis del Do While o Do Loop es como sigue:
Forma 1.
Do { While | Until } Condición
[Instrucciones a repetir] Los elementos que se encuentran entre
[Exit Do ] corchetes “[ ]” son opcionales, “Exit Do”
[Instrucciones a repetir] provocará que el Do While termine.
Loop
Si por algún motivo la instrucción creada es un
Forma 2. bucle infinito presione ESC CTRL + ENTER para
Do poder romper el bucle sin tener que cerrar
[Instrucciones a repetir] Excel.
[Exit Do]
[Instrucciones a repetir]
Loop { While | Until } Condición
17
Ejercicio 6.1. Localización de una planta mediante el método de centro de gravedad.
Uno de los métodos para localizar una planta es el “centro de gravedad” el cual, teniendo en cuenta
la localización de cada uno de los proveedores expresados mediante sus coordenadas (x, y), se
obtiene una coordenada (x, y) que indica la ubicación estratégica de la nueva planta de forma que
la distancia a cada una de los proveedores se adecue a la cantidad de productos que le abastecen a
la empresa. Este método se asemeja a un promedio ponderado, en donde los “pesos” están
representados por la cantidad de materia prima o insumos que la empresa requiere de un proveedor
en particular, por lo que su ubicación estará más cerca a esta misma.
2) Presione las teclas Alt + F11, para entrar al editor de Visual Basic.
3) Activa las siguientes opciones:
Dar clic en el Menú Ver y elija la opción Explorador de Proyectos.
Dar clic en el Menú ver y elegir la opción Ventana Propiedades.
18
Ejercicio 6.2. Cálculo de mínimos cuadrados.
Existen Casos en lo que se puede aproximar el valor de un resultado como una función que depende
de una componente constante y una componente variable. A este método de estimación se le llama
método de mínimos cuadrados o MCO. De esta manera a partir de una hoja de cálculo se pueden
deducir las componentes de dicha función:
19
Para practicar…
Generar una macro con el siguiente código para crear un archivo por cada hoja que contiene.
Sub [Link]
Crear_un_Archivo_por_cada_hoja_d Filename:=[Link] & "\"
e_Excel() & nombre_hoja,
Dim i As Integer FileFormat:=xlNormal,
Password:="",
[Link] WriteResPassword:="",
=1 ReadOnlyRecommended:=False
i=1
Do Until i > [Link] [Link] False
On Error Resume Next [Link] = True
i=i+1
Sheets(i).Select Loop
[Link] End Sub
nombre_hoja = [Link]
Observa el resultado al ejecutar la
[Link] macro.
Localiza las instrucciones que
[Link] salvan el archivo y crea el nuevo
Paste:=xlPasteColumnWidths, libro.
Operation:=xlNone, _
SkipBlanks:=False, Describe el proceso de creación
Transpose:=False de los archivos de cada hoja.
[Link]
[Link] =
False
20
firma = InputBox("Ingrese la fecha de Cells(primerafila + 1, 7).Value = firma
firma", "Fecha") Cells(primerafila + 1, 8).Value = duracion
duracion = InputBox("Ingrese la duración Cells(primerafila + 1, 9).Value =
del proyecto", "Duración") responsable
responsable = InputBox("Ingrese al primerafila = primerafila + 1
reponsable del proyecto", "Responsable")
Loop
Cells(primerafila + 1, 1).Value = codigo
Cells(primerafila + 1, 2).Value = nombre Observa el resultado al ejecutar la macro.
Cells(primerafila + 1, 3).Value = cliente
Cells(primerafila + 1, 4).Value = monto Verifica el código y convierte las inputBox
Cells(primerafila + 1, 5).Value = unidad en un formulario de entrada.
Cells(primerafila + 1, 6).Value = cantidad
21
Práctica 7. Creando formularios y programándolos.
Conceptos.
Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de mucha utilidad
porque nos ayudan a evitar errores en la captura de información. Podemos comparar los formularios
de Excel con los formularios impresos en papel. Estos formularios contienen instrucciones precisas
de lo que debes escribir y contienen los recuadros necesarios para ingresar los datos.
Los formularios en Excel no son tan diferentes de los formularios impresos ya que de igual manera
proveen de los espacios necesarios para ingresar los datos. Los formularios en Excel utilizan objetos
especiales conocidos como controles de formulario que son precisamente los que nos permiten
agregar campos de texto, listas, botones de opción entre otras cosas más.
1. Formulario de datos.
22
3. Formularios de usuario en VBA.
Los formularios de usuario en VBA, también Una vez que se ha creado el formulario de
conocidos como UserForm, son cuadros de usuario podemos arrastrar y soltar los
diálogo que hacen uso de controles de controles que están disponibles desde el
formulario para solicitar información al Cuadro de herramientas:
usuario. Estos formularios son creados desde
el Editor de Visual Basic y administrados
desde código VBA.
23
4) Una vez seleccionado el comando
deberás pulsar el botón Agregar y
finalmente hacer clic en el botón Aceptar
para cerrar el cuadro de diálogo Opciones
de Excel y para que dicho comando sea
agregado a la barra de herramientas de
acceso rápido tal como se muestra en la
siguiente imagen.
1) Presione las teclas Alt + F11, para entrar al editor de Visual Basic.
2) Activa las siguientes opciones:
Dar clic en el Menú Ver y elija la opción Explorador de Proyectos.
Dar clic en el Menú ver y elegir la opción Ventana Propiedades.
3) Del Menú Insertar elegir la Opción
UserForm. Esto inserta el Formulario que
programaremos con controles. En el
Explorador de Proyecto se observará que
se insertó el UserForm. También cuando
de clic en el Formulario USERFORM1 se
debe de activar el Cuadro de
Herramientas, si no se activa de clic en el
Menú Ver y elija la opción Cuadro de
Herramientas.
24
4) Elegir del Cuadro de Herramientas el
Control Etiqueta el que tiene la A y
Arrastrar dibujando en el Formulario
USERFORM1 la etiqueta. Quedará el
nombre Label1, después de un clic en la
etiqueta dibujada y podrá modificar el
nombre de adentro y pondremos ahí
Nombre.
25
7) Elegir del Cuadro de Herramientas el
control Botón de Comando y Arrastre
dibujando en el Formulario USERFORM1
el Botón, después de un clic en el nombre
del Botón dibujado y podrá modificar el
nombre y pondremos ahí Insertar. Si por
error da doble clic en la Botón y lo manda
a la pantalla de programación de la
etiqueta, solo de doble clic en UserForm1
que se encuentra en el Explorador de
Proyecto.
9) Para volver al Formulario y programar el siguiente Textbox dar doble clic en UserForm1 que se
encuentra en el Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo
Explorador de Proyecto.
Para volver al Formulario y programar el siguiente Textbox dar doble clic en UserForm1 que se
encuentra en el Explorador de Proyecto, o simplemente de clic en Ver Objeto en el mismo
Explorador de Proyecto.
26
11) Ahora dar doble clic sobre el control Private Sub TextBox3_Change()
Textbox3 para programarlo y después Range("C9").Select
insertar el siguiente código. ActiveCell.FormulaR1C1 = TextBox3
End Sub
Esto indica que se valla a C9 y escriba lo
que hay en el Textbox3
Para volver al Formulario y programar el Botón de Comando Insertar dar doble clic en
UserForm1 que se encuentra en el Explorador de Proyecto, o simplemente de clic en Ver Objeto
en el mismo Explorador de Proyecto.
13) Ahora presionar el botón Ejecutar User/Form que se encuentra en la barra de herramientas o
simplemente la tecla de función F5.
Se activará el Userform1 y todo lo que se escriba en los Textbox se escribirá en Excel y cuando
se presione el botón Insertar, se insertara un renglón y se vaciaran los Textbox y después se
mostrara el cursor en el Textbox1.
Para practicar…
Agregar el código para el botón Cancelar. Para agregar este código se puede hacer
El botón cancelar cerrará el formulario sin doble clic sobre el control. La sentencia
guardar la información capturada en “Unload Me” cerrará el formulario
ningún lugar. El código que se deberá
utilizar es el siguiente: Private Sub CommandButton2_Click ()
Unload Me
End Sub
27
Para facilitar la apertura del formulario
vamos a colocar un botón ActiveX en la
hoja con el siguiente código:
28
Práctica 8. Trabajando con fórmulas.
Conceptos.
Una fórmula realiza cálculos u otras acciones con los datos de una hoja de cálculo. Una fórmula
siempre empieza con un signo igual (=), seguido de números, operadores matemáticos (como los
signos de más y menos) y funciones, que pueden ampliar el poder de una fórmula.
Una fórmula también puede contener lo siguiente: funciones, referencias, operadores y constantes.
En la siguiente tabla se muestran aquellos operadores que son los más utilizados por los usuarios
de Excel.
1) Presione las teclas Alt + F11, para entrar al editor de Visual Basic.
2) Activa las siguientes opciones:
Dar clic en el Menú Ver y elija la opción Explorador de Proyectos.
Dar clic en el Menú ver y elegir la opción Ventana Propiedades.
29
3) Del Menú Insertar elegir la Opción
UserForm. Esto inserta el Formulario que
programaremos con controles. En el
Explorador de Proyecto se observará que
se insertó el UserForm. También cuando
de clic en el Formulario USERFORM1 se
debe de activar el Cuadro de
Herramientas, si no se activa de clic en el
Menú Ver y elija la opción Cuadro de
Herramientas.
30
Private Sub TextBox2_Change() ‘Esto se debe a que los Textbox no son
Range("B9").Select Numéricos y debemos de Convertirlos
ActiveCell.FormulaR1C1 = TextBox2 End Sub
‘Aquí se crea la Formula
TextBox3 = Val(TextBox2) * 365 Private Sub TextBox3_Change()
‘El Textbox3 guardara el total de la Range("C9").Select
multiplicación del Textbox2 por 365 ActiveCell.FormulaR1C1 = TextBox3
‘El Comando Val permite convertir un End Sub
valor de Texto a un Valor Numérico
Esto va permitir que cuando se ejecute el formulario y se de la edad el resultado de los días vividos
aparecerá en el Textbox3 y se escribirá también en Excel. El comando Val es un comando de Visual
Basic que permitirá convertir un valor de texto a un valor numérico. Hay que recordar que el carácter
de comilla simple al principio del renglón se utiliza para poner comentarios únicamente y no afecta
a la programación.
Para practicar…
Generaremos un Formulario para calcular el sueldo neto a partir de los días trabajados más un
bono de productividad con los siguientes controles:
5 Etiquetas.
5 Textbox.
1 botón de comando.
Los datos que se preguntarán serán Nombre, Días Trabajados, Pago por Día, Bono y Sueldo Neto.
31
Private Sub TextBox3_Change()
Range("C9").Select
ActiveCell.FormulaR1C1 = TextBox3 Private Sub TextBox5_Change()
End Sub Range("E9").Select
ActiveCell.FormulaR1C1 = TextBox5
End Sub
Private Sub TextBox4_Change()
Range("D9").Select
ActiveCell.FormulaR1C1 = TextBox4
TextBox5=Val(TextBox2) *Val(TextBox3)
+Val(TextBox4)
‘El TextBox5 guardara el total
End Sub
32
Práctica 9. Buscando información a partir de una Textbox.
Conceptos.
Una búsqueda de información es el conjunto de operaciones o tareas que tienen por objeto poner
al alcance de un usuario la información que dé respuesta a sus preguntas, mediante la localización
y acceso a los recursos de información pertinentes.
Un objeto es una identidad que está representada por información en una base de datos. En
dependencia de la aplicación estos objetos pueden ser archivos de texto, imágenes, audio, mapas,
videos, etc.
1) Cargar el archivo empleados usado al final de la práctica 8 y que se llenó vía formulario.
2) Presione las teclas Alt + F11, para entrar al editor de Visual Basic.
3) Activa las siguientes opciones:
Dar clic en el Menú Ver y elija la opción Explorador de Proyectos.
Dar clic en el Menú ver y elegir la opción Ventana Propiedades.
33
El formulario tendrá: Una Textbox.
Un Botón de Comando.
Una etiqueta.
El dato que se preguntará será el Nombre y el título del botón es “Buscar ahora”.
La macro se ejecutará al dar clic en el botón buscando el nombre que se introdujo en el TextBox1,
posicionando el cursor sobre él.
Para practicar…
Se deberán de juntar los formularios de la práctica 7 con el formulario de esta práctica, a través
de un botón que se insertará en el formulario de la práctica anterior. El nuevo formulario se
llamará a través del botón insertado.
También se deberá de insertar un botón de cerrar en el formulario de búsqueda para regresar
al anterior formulario y darle en control.
34
Práctica 10. Elaboración de gráficas de datos.
Conceptos.
Elegir entre los diferentes tipos de gráficos en Excel para mostrar la información adecuadamente es
de suma importancia. Cada tipo de gráfico desplegará la información de una manera diferente así
que utilizar el gráfico adecuado ayudará a dar la interpretación correcta a los datos. Estos son los
tipos de gráficos más utilizados en Excel:
Gráficos de columna. Este tipo de gráfico hace un énfasis especial en las variaciones de los datos a
través del tiempo. Las categorías de datos aparecerán en el eje horizontal y los valores en el eje
vertical. Frecuentemente se compara este tipo de gráfico con los gráficos de barra, donde la
diferencia principal es que en los gráficos de barra las categorías aparecen en el eje vertical.
Gráficos de línea. Un gráfico de línea muestra las relaciones de los cambios en los datos en un
período de tiempo. Este gráfico es comparado con los gráficos de área, pero los gráficos de línea
hacen un énfasis especial en las tendencias de los datos más que en las cantidades de cambio como
lo hacen los gráficos de área.
Gráficos circulares. También conocidos como gráficos de pie (en inglés) o gráficos de pastel. Estos
gráficos pueden contener una sola serie de datos ya que muestran los porcentajes de cada una de
las partes respecto al total.
Gráficos de Área. Los gráficos de área muestran la importancia de los valores a través del tiempo.
Un gráfico de área es similar a un gráfico de línea, pero ya que el área entre las líneas está relleno,
el gráfico de área le da una mayor importancia a la magnitud de los valores que lo que puede hacer
un gráfico de línea.
Gráficos XY (Dispersión). Los gráficos de dispersión son útiles para mostrar la relación entre
diferentes puntos de datos. Este tipo de gráfico utiliza valores numéricos para ambos ejes en lugar
de utilizar categorías en alguno de los ejes como en los gráficos anteriores.
Gráficos de anillos. Nos permiten mostrar los datos como un porcentaje del total, en ese sentido
son similares a los gráficos de circulares (gráficos de pie). Con estos gráficos podemos fácilmente
enfocar nuestra atención en el tamaño de cada sección del anillo. Aunque los gráficos de anillos son
similares a los gráficos circulares se diferencian porque pueden contener más de una serie de datos.
Cada serie de datos que se trace agregará un nuevo anillo al gráfico.
35
Gráficos de burbuja. Los gráficos de burbuja nos permiten mostrar tres dimensiones de datos en un
gráfico de dos dimensiones. El gráfico de burbuja es una variación del gráfico de dispersión en donde
los puntos son reemplazados por burbujas. El tamaño de las burbujas es lo que representa la tercera
dimensión de datos en el gráfico. Las burbujas se grafican de acuerdo a los valores de X y de Y
mientras que su tamaño será proporcional al tercer valor. Los gráficos de burbuja son
frecuentemente utilizados para presentar información financiera ya que los diferentes tamaños de
las burbujas enfatizan adecuadamente los diferentes valores financieros.
Ejercicio 10.1. Crear una macro para imprimir las gráficas en pdf.
2) Presione las teclas Alt + F11, para entrar al editor de Visual Basic.
3) Activa las siguientes opciones:
Dar clic en el Menú Ver y elija la opción Explorador de Proyectos.
Dar clic en el Menú ver y elegir la opción Ventana Propiedades.
Del Menú Insertar elegir la Opción Módulo. Esto insertará un módulo. En el Explorador de Proyecto
se observará que se insertó el módulo
36
Esta macro consiste en iterar a través de la lista en ChartObjects, utilizando el concepto para
recorrer las listas de la hoja activa con un contador. Comienza la iteración mediante el contador
i desde 1 hasta el número máximo de gráficos de la lista en ChartObjects de la hoja activa. Activa
cada gráfico según el número de índice la lista del ChartObjects, luego se puede ajustar la
propiedad Orientación a cualquiera xlLandscape o xlPortrait dependiendo de lo que necesite y
por último se utiliza el método [Link] para activar la impresión.
6) Ahora vamos a ver lo que hace nuestra macro. Hay varias maneras de ejecutar una macro:
Desde la hoja de cálculo: Menú – Vista – Macros – seleccionamos la macro y Ejecutar.
Desde el editor de VBA: Colocando el cursor dentro de la macro (entre Sub y End Sub) y
Menú – Ejecutar – Ejecutar Sub/UserForm.
Oprimir F5.
37
Dim Hoja_1 As Worksheet ‘Crea un informe de tabla dinámica
Dim Hoja_2 As Worksheet basada en un objeto PivotCache.
Devuelve un objeto de tabla dinámica.
‘El método PivotCache devuelve un Set Tabla_Dinamica =
objeto PivotCache para un informe de Cache_Tabla.CreatePivotTable(TableDes
tabla dinámica (cada informe sólo tiene tination:=Worksheets("Tabla").Range("
un caché). A3"), TableName:="PivotTable3")
Dim Cache_Tabla As PivotCache Tabla_Dinamica.Format xlReport4
Tabla_Dinamica.ManualUpdate = True
‘Es un miembro de la colección de tablas
dinámicas. La colección de tablas ‘Devuelve un subconjunto de los campos
dinámicas contiene todos los objetos de de tabla dinámica.
tabla dinámica en una sola hoja de Tabla_Dinamica.AddFields
cálculo RowFields:=Array("DESCRIPCION DE
Dim Tabla_Dinamica As PivotTable CUENTA"), PageFields:="MES"
38
7) Una vez introducido el código, ahora vamos a probarlo. El resultado es una tabla dinámica que
se crea en la hoja “Tabla” con los datos de la hoja “BD”, en la cual los conceptos de gastos son
sumados por mes y expresados en pesos, como se muestra en la figura.
39
'Adición del gráfico End With
'[Link] (forma antigua de
añadir los gráficos / actualmente se una 'Atributos del Título principal
[Link] [Link]
[Link] [Link] = True
[Link] = With [Link]
xlColumnClustered .Name = "Courier"
.Size = 16
'Se selecciona desde 1,1 hasta la fila 12 .Bold = True
Final = Sheets("Tabla").Cells(fila, End With
1).End(xlDown).Row
'Atributos del Título vertical
'Definir la fuente de datos [Link](xlValue).[Link]
[Link] ct
Source:=Sheets("Tabla").Cells(fila, [Link] = True
1).Resize(Final - fila + 1, 7) With [Link]
[Link] .Name = "Comic Sans"
Where:=xlLocationAsObject, .Size = 10
Name:="Hoja1" .Bold = True
End With
'Leyenda
[Link] = True 'Atributos del Título horizontal
[Link](xlCategory).AxisTitle.S
[Link] = False elect
'Oculta filtro de la tabla dinámica (solo si [Link] = True
el dato proviene de una tabla dinámica) With [Link]
.Name = "Arial"
With ActiveChart .Size = 10
'Titulo Principal .Bold = True
.HasTitle = True End With
.[Link] =
"EMPRESA ABC - 2012" 'Borde del Gráfico
'Titulo Horizontal With [Link]
.Axes(xlCategory, .Weight = 3
xlPrimary).HasTitle = True .LineStyle = -1
.Axes(xlCategory, End With
xlPrimary).[Link] =
aTitulo(i) [Link] = True
'Titulo Vertical
.Axes(xlValue, xlPrimary).HasTitle Call SizeGrafAct
= True Sheets("Hoja1").Select
.Axes(xlValue,
xlPrimary).[Link] =
"Expresado en Pesos"
40
El código anterior da como resultado la siguiente imagen.
Para practicar…
41
Práctica 11. Uso de funciones.
Conceptos.
Un procedimiento Function es una serie de instrucciones de Visual Basic encerradas entre dos
instrucciones Function y End Function. Un procedimiento Function es similar a un procedimiento
Sub, aunque una función puede devolver además un valor. Un procedimiento Function acepta
argumentos, como pueden ser constantes, variables o expresiones que le pasa el procedimiento
que efectúa la llamada. Si un procedimiento Function no tiene argumentos, la instrucción Function
debe incluir un par de paréntesis vacíos. Una función devuelve un valor asignándolo a su nombre en
una o más instrucciones del procedimiento.
Ejercicio 11.1. Crear una función para realizar la conversión de grados Fahrenheit a Celsius.
42
7) Una vez creado el procedimiento
Principal. Ahora vamos a crear la función.
Ir al menú insertar y escoger la opción
procedimiento. Llenar el cuadro de
diálogo de acuerdo a la figura.
8) Una creada la función añadir al final de los paréntesis las instrucciones as double. Después
introducir dentro de la función el código que se muestra en la siguiente imagen.
Como se mencionó al principio, la característica principal de una función es que puede regresar un
valor. Es por eso que al definir una función se debe indicar el tipo del valor de retorno que tendrá
dicha función. En este caso el valor de retorno será de tipo Double y se está especificado por las
palabras As Double que aparecen después de los paréntesis.
Una vez que se han hecho los cálculos necesarios, es importante regresar el valor. Para hacerlo es
indispensable igualar el nombre de la función al valor o variable que contiene el valor que se desea
regresar. En nuestro ejemplo, la variable Celsius es la que contiene el resultado de la conversión
por lo que se iguala con el nombre de la función en la línea CalCelsius = Celsius.
43
9) Ahora vamos a ver lo que hace nuestra macro. Hay varias maneras de ejecutar una macro:
Desde la hoja de cálculo: Menú – Vista – Macros – seleccionamos la macro y Ejecutar.
Desde el editor de VBA: Colocando el cursor dentro de la macro (entre Sub y End Sub) y
Menú – Ejecutar – Ejecutar Sub/UserForm.
Oprimir F5.
Ejercicio 11.2. Crear una macro para buscar el mínimo valor a través de la función min.
44
8) Ahora vamos a ver lo que hace nuestra macro. Hay varias maneras de ejecutar una macro:
Desde la hoja de cálculo: Menú – Vista – Macros – seleccionamos la macro y Ejecutar.
Desde el editor de VBA: Colocando el cursor dentro de la macro (entre Sub y End Sub) y
Menú – Ejecutar – Ejecutar Sub/UserForm.
Oprimir F5.
Para practicar…
45