0% encontró este documento útil (0 votos)
560 vistas51 páginas

Curso de Macros en Excel para Principiantes

Ayuda a escribir el código de las macros. Project Explorer: Muestra todos los módulos y objetos del proyecto actual. Immediate Window: Permite ejecutar líneas de código de forma inmediata. Code Window: Ventana donde se escribe el código de las macros. Ejercicio 2.1. Abrir el editor VBA. 1) Abrir Excel y crear un nuevo libro en blanco. 2) Ir a la pestaña "Vista" y seleccionar el botón "Visual Basic". Esto abrirá el editor de Visual Basic para A

Cargado por

Omar Vadillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
560 vistas51 páginas

Curso de Macros en Excel para Principiantes

Ayuda a escribir el código de las macros. Project Explorer: Muestra todos los módulos y objetos del proyecto actual. Immediate Window: Permite ejecutar líneas de código de forma inmediata. Code Window: Ventana donde se escribe el código de las macros. Ejercicio 2.1. Abrir el editor VBA. 1) Abrir Excel y crear un nuevo libro en blanco. 2) Ir a la pestaña "Vista" y seleccionar el botón "Visual Basic". Esto abrirá el editor de Visual Basic para A

Cargado por

Omar Vadillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MACROS EN EXCEL

El curso de macros en EXCEL


Perfil del participante. está dirigido a todo aquel
profesionista sin
conocimientos de
programación y del lenguaje
Visual Basic con necesidades
de crear una herramienta de
trabajo propia y a la medida de
las actividades que desarrolla
en su quehacer profesional.

Objetivo General. Explicar el ambiente de


programación Visual Basic
para el entorno de desarrollo
de la hoja de cálculo EXCEL.

1. Grabar macros.
Temario.
1.1. Macros.
1.2. Grabar y ejecutar.
1.3. Asignación de teclas a las
macros hechas.

2. Esquema de código de una


macro.
2.1. Editor de VBA.
2.2. Pasos para crear una
macro.
2.3. Insertar código.
2.4. Probar el código de la
macro a través del editor
VBA.
I
2.5. Vista desarrollador.
Temario. (Cont.)
3. Tipos de variables en Visual
Basic.
3.1. Variables.
3.2. Declaración de variables.
3.3. Tipos de variables en
EXCEL.
3.4. Lectura de datos externos
para llenado de hojas de un
libro en EXCEL:
3.5. Pestaña personalizada
con las macros creadas.
3.6. Objetos y funciones
principales del ambiente
VBA para EXCEL.

4. Instrucciones if … else (Si …


entonces).
4.1. Si … entonces.
4.2. Esquemas del Si …
entonces.
4.3. Macro para determinar
IVA.
4.4. Lectura de valores desde
una celda.
4.5. Macro para determinar el
saludo de acuerdo al día.

5. Operadores lógicos AND, OR


y NOT.
5.1. Operador AND.
5.2. Operador OR:

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.

10. Elaboración de gráficas


de datos.
10.1. Representaciones
gráficas, tipos y usos más
comunes.
10.2. Imprimir gráficos en pdf.
10.3. Tablas dinámicas.
10.4. Gráfica de datos de una
tabla dinámica.
10.5. Gráfica en hoja activa.
10.6. Gráfica de pastel.
10.7. Gráfica en una hoja
predeterminada.

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.

Ejercicio 1.1. Grabar y ejecutar una macro.

1) Ubicarse en la celda A1, escribir su nombre y presiona Enter.


2) Regresarse a la celda A1. Dar clic en la pestaña “Vista” y localizar el botón Macros.
3) Dar un clic en la flecha para desplegar la lista de opciones.
4) Escoger grabar macro. Excel activa el presionando las teclas Shift + Control + la
cuadro de diálogo que permitirá darle el letra que se indicó.
nombre a la macro y asignar la
combinación de teclas para ejecutarla
(Método abreviado). La letra deberá ser
de preferencia en minúscula, porque si la
letra es mayúscula la macro se activará

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…

 Genera las siguientes Macros:


 Grabar una Macro que se active con Control + b que permita abrir un archivo.
 Grabar una Macro que se active con Control + c que permita insertar una imagen.

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.

1) Debemos primero activar la ficha de


programador. 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, y en el
cuadro pestañas principales activamos la
casilla Mostrar pestaña de programador
en la cinta de opciones.

2) Para entender mejor el editor vamos a macros que hemos creado en el


crear una macro en blanco. Para hacer documento.
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

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.

3) Haciendo esto hemos creado nuestra


primera macro, y hemos entrado en el
editor de VBA.
El editor contiene 3 ventanas principales:
la Ventana Proyecto (parte izquierda
superior), la Ventana de Código (parte
derecha) y la Ventana Propiedades (parte
izquierda inferior).

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")

6) Ahora vamos a ver lo que hace nuestra  Menú – Ejecutar – Ejecutar


macro. Hay varias maneras de ejecutar Sub/UserForm
una macro:  Oprimir F5
 Desde la hoja de cálculo: Menú –  Clic en el botón ejecutar.
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

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…

 Genera los códigos para las siguientes Macros:


 Escribir Hola más el nombre en varias celdas consecutivas. Entramos en nuestra
macro para modificarla (Menú—Macros–Modificar o Alt+F11 para entrar
directamente en el editor). Y agregamos la instrucción siguiente debajo de la
instrucción de la caja de mensaje y antes del final de la subrutina: Range ("A1:F11").
Value = “Hola " & strnombre

 Escribir los múltiplos de 2 en Sub MiMacro()


las filas pares de la columna Dim i As Integer
1. Para hacer esto For i = 1 To 100
escribiremos el código que se If i Mod 2 = 0 Then
muestra a continuación. Cells(i, 1).Value = i
End If
Next i
End Sub

 Creación de un botón de comando. Vamos a crear un botón de comando y le


asignaremos una macro al hacer clic en él.

Vamos a la ficha de Desarrollador


(activada en los pasos
anteriores). Hacemos clic en
Insertar – Controles de
formulario – Botón

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.

Al pulsar el botón vemos que el resultado es el mismo que tuvimos al ejecutar


MiMacro2. Si pulsamos con el botón derecho sobre el botón podremos cambiarle
el nombre, moverlo a otro sitio, o incluso modificar la macro asociada al mismo.

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:

Dim NombreVariable As TipoVariable

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:

Dim Numero1 As Integer


Dim Numero2 As Long
Para asignarle un valor a una variable previamente creada, simplemente utilizamos el operador =

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.

La instrucción Option Explicit al principio de un módulo obliga a declarar variables en el módulo.


Esta sección se denomina sección de declaraciones, y todo lo que se declare en ella afectará a todos
los procedimientos y funciones que se definan en el módulo.

Ejercicio 3.1. Crear una macro con declaración de variables.

7
1) Vamos a comenzar esta práctica
importando datos. Para ello abra
Excel el archivo [Link].

2) Ir a la ficha de “Datos”. Dar un clic en


el botón “Texto en columnas”. Un
asistente aparecerá para importar los
datos. Los valores que debemos
colocar son:
En el primer paso escoger la opción
de delimitados por un carácter y clic
en el botón siguiente.
3) En el segundo paso, marcar el punto y
coma como carácter de separación de
las columnas. Dar un clic en el botón
siguiente.

4) Cambiar en el tercer paso sólo la


primera columna a texto. Dar clic en
el botón de finalizar.
Los datos nos quedaran en un
formato de hoja de Excel.

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.

7) Escribimos el código que se


encuentra del lado derecho. El código
se deberá de escribir entre las Sub insertarcolumna()
instrucciones Sub y End Sub. Dim RangoCol As String
RangoCol = "E:E"
Observa que tenemos dos variables Dim AnchoCol As Integer
declaradas a través de “Dim” que AnchoCol = 10
sirven para almacenar el rango de Columns(RangoCol).Select
columnas y la otra para dar el ancho [Link] Shift:=xlToRight
Range("E1").Value = "SUBTOTAL"
de la columna creada.
Columns(RangoCol).ColumnWidth
= AnchoCol
End Sub

8) Crearemos una segunda macro. El Sub FormatearTituloDeColumna ()


proceso es de la misma forma como Range("A1:H1").Select
se creó la primera macro del ejercicio. With Selection
Esta segunda macro se llama .[Link] = 3
“FormatearTituloDeColumna”. El .[Link] = 33
código a escribir entre las .[Link] = True
instrucciones Sub y End Sub es: .HorizontalAlignment = xlCenter
Observa que no existen variables para .VerticalAlignment = xlBottom
los rangos y valores de las End With
propiedades de la celda. Corrige el End Sub
código e inserta las variables que
necesitas para dar los valores que se
piden.

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.

14) Ahora vamos a insertar la macro de Sub borrarformato()


borrarformato, cuyo código es el Range("A1:G1").Select
siguiente: [Link]
End Sub

15) Insertaremos el código necesario Sub CalculoIVA ()


para realizar el cálculo del IVA, total y Dim fila As Integer
beneficio, para cada uno de los Dim beneficio, subtotal As Integer
artículos y el total general. Cells(2, 5).Select
16) Salir de Excel y volver a entrar, para For fila = 2 To 7
que trabajar limpio sin ninguna macro subtotal = Cells(fila, 2) * Cells(fila,
y empezar con la macro1 de nuevo 4)
para la siguiente práctica. Cells(fila, 5) = subtotal
Cells(fila, 6) = subtotal * 0.16
Cells(fila, 7) = subtotal * 1.16
beneficio = (Cells(fila, 4) - Cells(fila,
3)) * Cells(fila, 2)
Cells(fila, 8) = beneficio
Next fila
End Sub

10
Para practicar…

 Basándose en la siguiente tabla de códigos generar las macros para:


 Escribir un nombre en una celda y lo ponga negritas.
 Escribir un nombre en una celda y lo centre.
 Escriba un nombre en una celda y cambie el tamaño de la letra a 20 puntos.
 Insertar una fila y una columna.
 Eliminar una fila y una columna.

Actividad Código en VBA


Trasladarse a una Celda Range("A1").Select
Escribir en una Celda Activecell.FormulaR1C1="Dato"
Tipo de Letra(Fuente) With [Link]
Name = "AGaramond"
End With
Tamaño de Letra (Tamaño de With [Link]
Fuente) Size = 15
End With
Letra Negrita [Link] = True
Letra Cursiva [Link] = True
Letra Subrayada [Link] = xlUnderlineStyleSingle
Centrar Texto With Selection
HorizontalAlignment = xlCenter
End With
Alinear a la izquierda With Selection
HorizontalAlignment = xlLeft
End With
Alinear a la Derecha With Selection
HorizontalAlignment = xlRight
End With
Insertar Fila [Link]
Eliminar Fila [Link]
Insertar Columna [Link]
Eliminar Columna [Link]
Abrir un Libro [Link] Filename:="C:\Mis documentos\video safe [Link]”

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:

 Expresión: Expresión qué se evalúa.


Su resultado puede ser verdadero o
If expresión Then falso.
instrucciones 1  Instucciones1: Instrucciones que se
[Else instrucciones 2] ejecutan, si el resultado de expresión
es verdadero.
 Instrucciones2: Instrucciones que se
ejecutan, si expresión resulta ser
falsa. (Else es opcional).

Si el resultado de “expresión” es verdadero, se ejecutan instrucciones1; si es falso, se sigue con la


siguiente línea de código a no ser que hayamos especificado un Else (entonces se ejecutarían
instrucciones2).

También podemos utilizar la siguiente sintaxis


en formato de bloque:
Tanto ElseIf …Then, como Else son opcionales
If expresión Then (por eso están entre corchetes). ElseIf …Then
instrucciones1 se utiliza para evaluar una segunda condición.
instrucciones2 Es muy importante que al terminar la
[ElseIf expresión2 Then] instrucción escribamos End If, sino el
instrucciones3 programa nos dará error.
instrucciones4
[Else]
instrucciones5
instrucciones6
End If

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

'lo presentamos en la celda


correspondiente

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:

If Precio > 1000 And Producto = “Reloj” Then [instrucciones]

 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:

If Precio > 1000 Or Producto = “Reloj” Then [instrucciones]

 NOT: (No lógico) NOT condición. El resultado es verdadero cuando la condición sea falsa.
Ejemplo:

If NOT Precio < 1000 Then [instrucciones]

Ejercicio 5.1. Crear una macro para realizar un descuento de producto.

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.

Ejercicio 5.2. Agregar una regla de negocios.

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.

Ejercicio 5.3. Calcular Totales.

Se abrirá un nuevo libro de Excel, en la hoja1


se creará una tabla con los valores que se
muestran en la siguiente figura.

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…

 Generar una macro que solicite la Sub ResultadoObtenido()


puntación de una práctica al usuario por Dim puntos As Integer
el teclado, la valore de tal forma que puntos = InputBox("¿Puntos obtenidos?")
emita un estado con los puntos If puntos >= 1 And puntos <= 40 Then
obtenidos. MsgBox ("Suspenso")
ElseIf puntos >= 41 And puntos <= 70 Then
De 1 a 40 sea Suspenso, de 41 a 70 aprobado, MsgBox ("Aprobado")
de 71 a 90 Notable y por encima de 90 ElseIf puntos >= 71 And puntos <= 90 Then
Sobresaliente. El código a introducir es el MsgBox ("Notable")
siguiente: ElseIf puntos > 90 Then
MsgBox ("Sobresaliente!")
End If
End Sub

 Generar otra macro que haga lo mismo, Sub ResultadoObtenido2()


pero insertando el siguiente código: Dim puntos As Integer
puntos = InputBox("¿Puntos obtenidos?")
Al término de la ejecución de este código, Select Case puntos
compara las dos macros y observa sus Case 1 To 40
MsgBox ("Suspenso")
similitudes y diferencias, así como sus
Case 41 To 70
desventajas y ventajas.
MsgBox ("Aprobado")
Case 71 To 90
MsgBox ("Notable")
Case Else
MsgBox ("Sobresaliente!")
End Select
End Sub

16
Práctica 6. Ciclos iterativos.

Conceptos.

En términos de programación, un bucle es una instrucción que nos permitirá ejecutar


repetidamente un conjunto de instrucciones hasta que se cumpla la condición que hayamos
especificado. Los bucles también son conocidos como ciclos. El bucle For-Next es una de las
instrucciones más útiles al programar en VBA. La sintaxis de esta instrucción es la siguiente:

For inicialización de variable To límite  Límite: Además de inicializar la variable


{Conjunto de instrucciones que se repetirán} que llevará la cuenta de las repeticiones,
Next incrementar variable debemos especificar un límite donde se
detendrá el ciclo. Este límite es indicado
 Inicialización de variable: Ya que la con la instrucción To. De esta manera, si
instrucción For Next repite un conjunto deseamos hacer un bucle que vaya desde
de instrucciones un número de veces 1 hasta 5 la instrucción la escribiremos
específico, debemos inicializar una como For i = 1 To 5.
variable que irá contando cada una de las  Incrementar variable: El final del
repeticiones. Es común encontrar la conjunto de instrucciones se indica con la
instrucción escrita como For i = 1 lo cual instrucción Next y que va seguida del
indica que la variable i llevará la cuenta de nombre de la variable que lleva la cuenta
las repeticiones que deseamos que inicien para incrementar su valor en uno. Así
en 1. podemos terminar el bucle con la
instrucción Next i.

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.

1) Se abrirá el libro de Excel método de


gravedad. En la hoja1 se encontrará la
tabla con datos que servirán para realizar
los cálculos, así como un botón incrustado
en esta para activar la macro. Tal como se
muestra en la siguiente figura.

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.

4) Colocar el siguiente código dentro de la cant = Cells(i, 4) + cant


estructura Private Sub a = x * cant1 + a
CommandButton1_Click() … End Sub para b = y * cant + b
definir la acción del botón al momento de i=i+1
dar el clic. Loop
Cells(4, 9) = Round(a / cant, 2)
Worksheets("Hoja1").Select Cells(5, 9) = Round(b / cant, 2)
ult = Cells([Link], 1).End(xlUp).Row
i=2 5) Ejecutar la macro para realizar el cálculo
cant = 0 del método centro de gravedad.
a=0
b=0 6) Con ayuda del diccionario de funciones
Do While i <= ult que se distribuye con el material abre el
x = Cells(i, 2) libro de Excel donde viene y busca el
y = Cells(i, 3)
significado de Round e interpreta el
cant1 = Cells(i, 4)
significado de worksheet, cells y row.
a1 = x * cant1
b1 = y * cant1
Cells(i, 5) = a1
Cells(i, 6) = b1

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:

y = b1 + b2 * x De acuerdo a las fórmulas:


Donde:
y: La variable resultante.
x: La variable generadora de cambio.
b1: Componente Fijo.
b2: Componente Fijo por Unidad.

1) Se abrirá el libro de Excel mínimos 'Sumai: suma de resultados'


cuadrados. En la hoja1 se encontrará la Sumai = 0
tabla con datos que servirán para realizar 'Sumaj: suma de generadores'
los cálculos. Tal como se muestra en la Sumaj = 0
siguiente figura. 'Sumai2: suma de cuadrados'
Sumai2 = 0
'Sumaij: suma de productos'
Sumaij = 0
'Se repetira el proceso hasta que se
encuentren celdas vacias'
Do While Cells(i, 1).Value <> ""
Sumai = Sumai + Cells(i, 2).Value
Sumaj = Sumaj + Cells(i, 1).Value
Sumai2 = Sumai2 + (Cells(i, 2).Value) ^ 2
Sumaij = Sumaij + ((Cells(i, 1).Value) *
(Cells(i, 2).Value))
2) Presione las teclas Alt + F11, para entrar
i=i+1
al editor de Visual Basic. Loop
'Contador de variables'
3) Activa las siguientes opciones: n=i-2
 Dar clic en el Menú Ver y elija la 'b1 componente fijo'
opción Explorador de Proyectos. b1 = ((Sumai2 * Sumaj) - (Sumai * Sumaij)) /
 Dar clic en el Menú ver y elegir la ((n * Sumai2) - (Sumai * Sumai))
opción Ventana Propiedades.
4) Crea una macro con el siguiente código. 'b2 componente variable'
Antes de hacerlo convierte el ciclo de un b2 = ((n * Sumaij) - (Sumai * Sumaj)) / (n *
Do while a una estrcutura For Next. Sumai2) - (Sumai * Sumai)

'i: contador de fila' MsgBox "La función de estimación es la


i=2 siguiente y = " & b1 & " + " & b2 & " * x"

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

 Generar una macro para el registro de un proyecto de acuerdo al siguiente código.


Dim primerafila As Double Do While Cells(primerafila + 1, 1).Value = ""
Dim nombre As String And MsgBox("¿Desea registrar muevo
Dim cliente As String proyecto?", vbYesNo, "Registro") = vbYes
Dim monto As Double
Dim unidad As String codigo = InputBox("Ingrese codigo del
Dim cantidad As Double proyecto", "Código")
Dim firma As Date nombre = InputBox("Ingrese el nombre del
Dim duracion As Integer proyecto", "Nombre")
Dim responsable As String cliente = InputBox("Ingrese el nombre del
cliente", "Cliente")
'determinar la primera fila monto = InputBox("Ingrese el monto del
proyecto", "Monto")
primerafila = 5 unidad = InputBox("Ingrese la unidad de
Do While Cells(primerafila, 1) = "" medida", "UM")
primerafila = primerafila - 1 cantidad = InputBox("Ingrese la cantidad
Loop de la unidad", "Cantidad")

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.

Existen tres tipos de formularios en Excel.

1. Formulario de datos.

A través de un formulario de datos podemos que solamente se mostrará el resultado del


mostrar al usuario la información de una sola cálculo sin poder editarlo.
fila de la tabla. En este formulario se puede
hacer la edición de la información e inclusive
crear un nuevo registro para la tabla.

Excel puede generar automáticamente un


formulario de datos para cualquier tabla. Un
detalle importante que debes saber sobre los
formularios de datos es que si una celda
contiene una fórmula no podrás modificar
dicha fórmula mediante el formulario, sino

2. Hojas de cálculo con controles de formulario o controles ActiveX.

Las celdas de una hoja de Excel nos sirven


para introducir información, podemos pensar
en una hoja como un gran formulario. De esta
manera, si agregamos controles de formulario
a nuestra hoja podremos crear formularios de
entrada de datos muy útiles.

Por ejemplo, podemos agregar a una hoja un


De igual manera podemos agregar botones,
control de cuadro de lista para facilitar la
cuadros combinados, casillas de verificación y
selección de los elementos.
otros controles más que nos ayudarán a crear
formularios avanzados.

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.

Ejercicio 7.1. Crear un formulario para agregar un nuevo empleado.

1) Se abrirá un nuevo libro de Excel, en la


hoja1 se creará una tabla con los valores
que se muestran en la siguiente figura.

2) Hacer un clic en el menú desplegable de


la barra de herramientas de acceso rápido
y seleccionaré la opción Más comandos.

3) Se mostrará el cuadro de diálogo


Opciones de Excel con la opción de
personalizar la barra de herramientas de
acceso rápido. En la lista de comandos
disponibles deberás seleccionar la opción
Todos los comandos y en la lista inferior
deberás buscar el comando Formulario.

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.

5) Para agregar una fila deberás seleccionar


cualquiera de las celdas de la tabla y
posteriormente pulsar el botón
Formulario que acabamos de agregar a la
barra de herramientas de acceso rápido.
Se mostrará un formulario que contendrá
un cuadro de texto para cada una de las
columnas de la tabla.
6) Para agregar una nueva fila deberás
pulsar el botón Nuevo y tendrás la
posibilidad de ingresar la información
requerida para cada columna de la tabla.

Ejercicio 7.2. Crear un formulario para agregar un nuevo contacto.

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.

Si por error da doble clic en la etiqueta 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.

5) Elegir del Cuadro de Herramientas el


control Cuadro de Texto el que tiene ab y
arrastre dibujando en el formulario
USERFORM1 el cuadro de texto a un lado
de la etiqueta que dice Nombre. El cuadro
de texto debe de estar vacío y su nombre
será Textbox1, el nombre solo aparecerá
en el control.

6) Hacer los dos pasos anteriores


igualmente poniendo Dirección en la
Label2 y Teléfono en la Label3 y también
dibújeles su Textbox. Si tiene algún
problema al dibujar las etiquetas o los
cuadros de texto, solo hay que cambiarle
el nombre a la etiqueta o el cuadro de
texto en la Ventana Propiedades la opción
se llama (Name). El Error que marque
puede ser Nombre Ambiguo, pero si le
cambias el Nombre al control se quitara el
error. Se puede poner cualquier nombre
en lugar de Label1.

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.

8) Ahora dar doble clic sobre el control


Textbox1 para programarlo insertando el
siguiente código. Private Sub TextBox1_Change()
Range("A9").Select
Esto indica que se valla a A9 y escriba lo ActiveCell.FormulaR1C1 = TextBox1
que hay en el Textbox1. End Sub

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.

10) Ahora dar doble clic sobre el control


Textbox2 para programarlo y después Private Sub TextBox2_Change()
insertar el siguiente código. Range("B9").Select
ActiveCell.FormulaR1C1 = TextBox2
Esto indica que se valla a B9 y escriba lo End Sub
que hay en el Textbox2

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.

12) Ahora dar doble clic sobre el control


Botón de Comando para programarlo y Private Sub
después insertar el siguiente código. CommandButton1_Click()
‘Inserta un renglón
[Link]
El carácter de comilla simple al inicio de
‘Empty Limpia Los Textbox
un renglón es empleado para poner
TextBox1 = Empty
comentarios dentro de la programación,
TextBox2 = Empty
el comando Empty es empleado para
TextBox3 = Empty
vaciar los Textbox.
‘[Link] Envía el cursor
al Textbox1 para volver a capturar
los datos [Link]
End Sub

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:

Private Sub CommandButton1_Click ()


[Link]
End Sub

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.

Las partes de una fórmula son:

1. Funciones: La función PI () devuelve el


valor de pi: 3,142...
2. Referencias: A2 devuelve el valor de la
celda A2.
3. Constantes: números o valores de texto
escritos directamente en una fórmula,
por ejemplo, 2.
4. Operadores: el operador ^ (acento
circunflejo) eleva un número a una
potencia, y el operador * (asterisco)
multiplica números.

En la siguiente tabla se muestran aquellos operadores que son los más utilizados por los usuarios
de Excel.

Operador aritmético Significado Ejemplo


+ (signo más) Suma 3+3
– (signo menos) Resta 3–1
Negación –1
* (asterisco) Multiplicación 3*3
/ (barra oblicua) División 3/3
% (signo de porcentaje) Porcentaje 20%
^ (acento circunflejo) Exponenciación 3^2

Ejercicio 8.1. Crear un formulario para calcular los días vividos.

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.

4) Ahora crearas un formulario con el El formulario tendrá:


siguiente aspecto:
 Tres etiquetas.
 Tres Textbox.
 Un Botón de Comando.

Los datos que se preguntaran serán Nombre,


Edad y los Días Vividos que se generaran
automáticamente cuando se inserte la edad.

5) Ahora se programarán los controles con los siguientes códigos:

Botón. Doble clic sobre este y se inserta el Private Sub CommandButton1_Click ()


siguiente código. [Link]
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
[Link]
End Sub

Códigos de las TextBox1, TextBox2 y Private Sub TextBox1_Change()


TextBox3. Doble clic sobre cada uno de ellas Range("A9").Select
para insertar los siguientes códigos. ActiveCell.FormulaR1C1 = TextBox1
End Sub

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.

Botón. Doble clic sobre este y se inserta el


siguiente código. Private Sub CommandButton1_Click()
[Link]
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
[Link]
End Sub

Códigos para las TextBox. Doble clic sobre


cada uno de ellas para insertar los siguientes
códigos.
Private Sub TextBox2_Change()
Private Sub TextBox1_Change()
Range("B9").Select
Range("A9").Select
ActiveCell.FormulaR1C1 = TextBox2
ActiveCell.FormulaR1C1 = TextBox1
End Sub
End Sub

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 proceso de recuperación de información comienza cuando un usuario hace una consulta al


sistema. Una consulta a su vez es una afirmación formal de la necesidad de una información. En la
recuperación de información una consulta no identifica únicamente a un objeto dentro de la
colección. De hecho, varios objetos pueden ser respuesta a una consulta con diferentes grados de
relevancia.

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.

Ejercicio 9.1. Crear un formulario para buscar el nombre de un trabajador.

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.

4) 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.

5) Ahora crearas un formulario con el


siguiente aspecto:

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”.

6) Ahora se programarán los controles con los siguientes códigos:

Botón. Doble clic sobre este y se inserta el :=xlPart, SearchOrder:=xlByRows,


siguiente código. SearchDirection:=xlNext, MatchCase:= _
False).Activate
Private Sub CommandButton1_Click() End Sub
[Link](What:=TextBox1,
After:=ActiveCell, LookIn:=xlFormulas,
LookAt _

Códigos de la TextBox1. Doble clic sobre ella Private Sub TextBox1_Change()


para insertar el siguiente código. Range("A9").Select
ActiveCell.FormulaR1C1 = TextBox1
End Sub

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.

Un gráfico o representación gráfica es un tipo de representación de datos, generalmente numéricos,


mediante recursos gráficos (líneas, vectores, superficies o símbolos), para que se manifieste
visualmente la relación matemática o correlación estadística que guardan entre sí. También es el
nombre de un conjunto de puntos que se plasman en coordenadas cartesianas y sirven para analizar
el comportamiento de un proceso o un conjunto de elementos o signos que permiten la
interpretación de un fenómeno. La representación gráfica permite establecer valores que no se han
obtenido experimentalmente sino mediante la interpolación (lectura entre puntos) y la
extrapolación (valores fuera del intervalo experimental).

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 Barra. Un gráfico de barra hace un énfasis en la comparación entre elementos en un


período de tiempo específico. Este tipo de gráfico incluye cilindros, conos y pirámides.

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.

1) Abrir un libro de Excel nuevo y capturar


los datos que se muestran en la siguiente
figura.
Realizar 2 gráficos con los datos (barras
para ingresos y barras para egresos).

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

4) Otra vez ir al menú insertar, elegir la


opción procedimiento. Se abrirá un
cuadro de diálogo el cual se llenará de
acuerdo a la figura que se muestra.

5) Dentro del procedimiento colocar el [Link](i).Activate


siguiente código: [Link] =
Dim ChartList As Integer xlLandscape
Dim i As Integer [Link] Copies:=1
For i = 1 To Next i
[Link]

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.

Ejercicio 10.2. Crear una macro para graficar datos.

1) Cargar el archivo [Link].


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.
4) 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.
5) Otra vez ir al menú insertar, elegir la
opción procedimiento. Se abrirá un
cuadro de diálogo el cual se llenará de
acuerdo a la figura que se muestra.

Nuestro ejemplo trabajará con una tabla


dinámica que primero se generará a
través de una macro, para después
originar la gráfica partiendo de esta.

Vamos a crear primero la macro para


generar la tabla dinámica.

6) El procedimiento creado se verá como en


la siguiente figura.
Dentro del procedimiento colocar el
siguiente código:

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"

Dim Rango_Tabla As Range With


Dim Ultima_Fila As Long Tabla_Dinamica.PivotFields("MES")
.Orientation = xlColumnField
Set Hoja_1 = Worksheets("Tabla") .Position = 1
.Name = "AÑO 2012"
‘Devuelve un objeto Range que End With
representa el rango que contiene la
totalidad del informe de tabla dinámica, With
incluyendo campos de página. Solo Tabla_Dinamica.PivotFields("IMPORTE")
lectura. .Orientation = xlDataField
For Each Tabla_Dinamica In .Function = xlSum
Hoja_1.PivotTables .Position = 1
Tabla_Dinamica.[Link] .NumberFormat = "#,##"
Next .Name = "Expresado en Pesos"
End With
Set Hoja_2 = Worksheets("BD")
Ultima_Fila = Hoja_2.Cells([Link], ‘Es cierto que si el informe de tabla
1).End(xlUp).Row dinámica se recalcula sólo a petición del
Set Rango_Tabla = Hoja_2.Cells(1, usuario. El valor predeterminado es
1).Resize(Ultima_Fila, 12) Falso.
Sheets("BD").Select Tabla_Dinamica.ManualUpdate = False
Sheets("Tabla").Select
Set Cache_Tabla =
[Link](Sourc
eType:=xlDatabase,
SourceData:=Rango_Tabla.Address)

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.

8) Con la tabla dinámica hecha, vamos a


realizar el gráfico para expresar los
gastos. La macro que definiremos será
para una gráfica de tipo columnas.
Crearemos por segunda vez un
procedimiento con los datos del
formulario que se muestra en la siguiente
figura.

Si existe alguna duda de cómo hacerlo


referirse a los primeros pasos del ejercicio
10.2.

9) Dentro del procedimiento colocar el siguiente código:


'Títulos de los gráficos 'Oculta las líneas de las celdas, es decir
Dim aTitulo(6) As String coloca la hoja en blanco para una mejor
aTitulo(1) = "Gastos 2012" presentación
[Link] = False
'Se oculta parte de la ejecución del
procedimiento 'Si hay gráficos previos, los borra
[Link] = False If
Worksheets("Hoja1").[Link]
fila = 1 nt > 0 Then
Worksheets("Hoja1").[Link]
'Cuenta las cantidades de tablas para te
generar la misma cantidad de gráficos End If
nTablas =
Worksheets("Tabla").[Link]

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…

 Verifica los resultados de las siguientes macros y observa sus diferencias.


 Macro para una gráfica en la hoja Sub CrearGrafico()
activa. [Link]
Antes de probar la macro coloca [Link]
datos en el rango que indica la macro Source:=Range("A1:B6")
y en una hoja nueva. End Sub

 Macro para crear una gráfica de Sub GraficoPastel()


pastel. [Link]
Antes de probar la macro coloca [Link]
datos en el rango que indica la macro Source:=Range("A1:B6")
y en una hoja nueva. [Link] = xlPie
[Link](1).Name =
"Ventas por Categoría"
End Sub

 Macro para Gráfico en una hoja predeterminada.


Antes de probar la macro coloca Sub CrearGrafico()
datos en el rango que indica la macro Worksheets("Hoja1").[Link].
y en una hoja nueva. Select
[Link]
Source:=Range("A1:B6")
End Sub

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.

1) Abrir un libro de Excel nuevo.


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.
4) 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.
5) Otra vez ir al menú insertar, elegir la
opción procedimiento. Se abrirá un
cuadro de diálogo el cual se llenará de
acuerdo a la figura que se muestra.

6) El procedimiento creado se verá como en


la siguiente figura.
Dentro del procedimiento colocar el
siguiente código:

temp = [Link]("Por favor,


introduzca la temperatura en grados F.")
MsgBox "La temperatura es " &
CalCelsius(temp) & " grados C."

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.

1) Abrir un libro de Excel nuevo.


2) Introducimos al azar valores enteros del 1 al 100 en las celdas de A1 a C10.
3) Presione las teclas Alt + F11, para entrar al editor de Visual Basic.
4) 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.
5) 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.

6) Otra vez ir al menú insertar, elegir la


opción procedimiento. Se abrirá un
cuadro de diálogo el cual se llenará de
acuerdo a la figura que se muestra.

7) Dentro del procedimiento colocar el


siguiente código:
En Visual Basic, las funciones de hoja de
cálculo de Microsoft Excel pueden
Dim myRange As Range
ejecutarse mediante el objeto
Set myRange =
WorksheetFunction.
Worksheets("hoja1").Range("A1:C10")
answer =
[Link](my
Range)
MsgBox answer

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…

 Realizar una macro para generar los


números aleatorios en una hoja de
cálculo en el rango de celdas de la A1 a la
C10.
 Para insertar una función de hoja de
cálculo en una celda, hay que especificar
la función como el valor de la propiedad
Fórmula del objeto Range
correspondiente. En el siguiente ejemplo,
la función MAX (que localiza el valor
mayor un rango) se asigna a la propiedad
Formula del rango A1:B3 de la Hoja1 del
libro activo.
Worksheets("Hoja1"). Range("A12").
Formula = "=MAX (A1:C10)"
 Adaptar la anterior instrucción para
aplicarla a la función RAND (). Hay que
considerar que no tiene parámetros.

45

También podría gustarte