Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DD-106
Página 1/19
Laboratorio – 03
OBJETIVOS
Identificar las estructuras de programación del lenguaje de programación Visual Basic para
Aplicaciones
Identificar tipos de datos, variables y contadores
Identificador los diferentes tipos de operadores
Identificar las sentencias de decisión
Identificar las sentencias de ciclos o bucles
Identificar la estructura de las funciones definidas por el usuario
Identificar las funciones de manejo de cadenas
REQUERIMIENTOS
PROCEDIMIENTO
1. Lenguaje Visual Basic para Aplicaciones
Introducción
La mayoría de lenguajes de programación poseen herramientas similares para la elaboración de los
programas que las personas debemos conocer de manera general
A continuación mostramos una lista de los diferentes elementos que debemos aprender sobre cada
nuevo lenguaje de programación que deseamos conocer:
1. Estructura de un programa (Estructura de una macro)
2. Tipos de datos
3. Declaración y uso de Variables
4. Operadores: aritméticos, lógicos, relacionales, de asignación
5. Sentencias de decisión simple y múltiple
6. Bucles o ciclos
7. Cadenas de caracteres
Sub nombre_macro()
End sub
Crear un libro nuevo de Excel habilitado para macros, con el nombre Lab_03 <nombre_apellido>
Seguir la ruta siguiente y hacer clic sobre la opción Macros:
En la ventana siguiente ingresar “borrar_contenido” como nombre de la nueva macro. Hacer clic en
el botón Crear.
1
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 2/19
Laboratorio – 03
Una vez abierto el entorno de VBA, ingresar el código siguiente dentro del procedimiento
borrar_contenido que se ha creado: (notar que los mensajes Sub borrar_contenido() y End sub se
colocan automáticamente)
Sub borrar_contenido()
Selection.ClearContents
Selection.ClearFormats
End sub
Luego de haber colocado “X” contenido y seleccionado respectivamente vemos que al ejecutar la
macros dicho contenido se elimina al instante.
Nota: Se recomienda trabajar los siguientes ejemplos en hojas de cálculo (etiquetas) distintas
2
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 3/19
Laboratorio – 03
Date 8 bytes 0:00:00 (media noche) 1 de enero del 0001 - 11:59:59 PM del 31
de diciembre del 9999
3
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 4/19
Laboratorio – 03
A continuación mostramos el ejemplo de una macro que declara diferentes tipos de variables
Sub m_variables()
Dim codigo As Integer
Dim nombre As String, fecha_nacimiento As Date
Dim salario As Double, casado As Boolean
End Sub
Sub m_variables()
Dim codigo As Integer
Dim nombre As String, fecha_nacimiento As Date
Dim salario As Double, casado As Boolean
codigo = 1001
nombre = "Juan Perez"
fecha_nacimiento = #8/20/1992#
salario = 2587.34
casado = True
End Sub
Sub m_variables()
Dim codigo As Integer
Dim nombre As String, fecha_nacimiento As Date
Dim salario As Double, casado As Boolean
codigo = 1001
nombre = "Juan Perez"
fecha_nacimiento = #8/20/1992#
salario = 2587.34
casado = True
ActiveCell.Value = codigo
ActiveCell.Offset(0, 1).Value = nombre
ActiveCell.Offset(0, 2).Value = fecha_nacimiento
ActiveCell.Offset(0, 3).Value = salario
ActiveCell.Offset(0, 4).Value = casado
End Sub
En el Excel active la Celda B2 de la Hoja 1 y ejecute la macro. Verifique que se obtenga la siguiente
salida:
4
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 5/19
Laboratorio – 03
Anote a continuación los detalles que considere más importantes del ejercicio realizado:
Con esta MACROS podemos tener variables que cambiaran según la orden que le demos.
5
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 6/19
Laboratorio – 03
OPERADORES LÓGICOS
Operador Descripción Ejemplo
And Evalúa si dos condiciones son Dim rpta As Boolean
verdaderas rpta = casado And (edad > 30)
Or Evalúa si una de dos condicio-nes Dim rpta As Boolean
es verdadera rpta = casado Or (edad > 30)
Xor Evalúa si una de dos condicio-nes Dim rpta As Boolean
es verdadera y la otra es falsa rpta = casado Xor (edad > 30)
Not Niega el valor de una expresión Dim rpta As Boolean
lógica rpta =not casado
OPERADOR DE CONCATENACIÓN
Operador Descripción Ejemplo
& Concatena dos expresiones Dim rpta As String
rpta = nombre & codigo
Implementar una macro en Excel denominada m_calculos_aritmeticos() que realice operaciones
aritméticas con los valores ingresados en las celdas A1 y B1 de su hoja actual y coloque los resultados
en las celdas B2 (Suma), B3 (Resta), B4 (Producto), B5 (Cociente), B6 (Cociente entero), B7 (Residuo),
B8 (Potencia de A1 ^ 2). A continuación se muestra el código requerido
Sub m_calculos_aritmeticos()
Dim a As Integer, b As Integer
a = Range("A1").Value
b = Range("B1").Value
Range("A2").Value = "Suma:"
Range("B2").Value = a + b
Range("A3").Value = "Resta:"
Range("B3").Value = a - b
Range("A4").Value = "Producto:"
Range("B4").Value = a * b
Range("A5").Value = "Cociente:"
Range("B5").Value = a / b
Range("A7").Value = "Residuo:"
Range("B7").Value = a Mod b
Range("A8").Value = "Potencia:"
Range("B8").Value = a ^ 2
End Sub
Ingrese números en las celdas A1 y B1, ejecute la macro y verifique los resultados generados
6
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 7/19
Laboratorio – 03
2. If Condicion then
Sentencia
...
End If
3. If Condicion then
Sentencia
...
Else
Sentencia
...
End If
Ejemplo 1. Implementar una nueva macro denominada m_decision_simple() con el siguiente código:
Sub m_decision_simple()
Dim a As Integer, b As Integer
a = Range("A1").Value
b = Range("B1").Value
If a = b Then
Range("C4").Value = "Los valores son iguales"
Else
Range("C4").Value = "Los valores son diferentes"
End If
End Sub
Ingrese números en las celdas A1 y B1, ejecute la macro y verifique los resultados generados
7
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 8/19
Laboratorio – 03
S
Ejemplo 2. En una nueva hoja de cálculo ingrese los siguientes datos:
o Haga clic sobre cualquier celda que contenga la hora y ejecute la macro ¿Qué es lo que
hace la macro?
Esta Macro nos brinda un mensaje indicando el tiempo que se le va a descontar en minutos.
….Se le descontara 2 minutos el dia de hoy
o Cambie una hora de llegada a las 08:09 horas y ejecute nuevamente la macro sobre esa
hora. ¿Qué resultado obtiene?
Brinda un mensaje … Gracias por su puntualidad.
o Modifique la macro para que aplique la tardanza a los 5 minutos después de las 08:00.
Ejecute la macro y muestre los nuevos resultados.
Ejemplo 3. En una nueva hoja se generará una macro la cual permita hacer descuentos en el precio
de un producto dependiendo del volumen de la compra (mientras más unidades compren, mayor
será el descuento). Ingresar los siguientes datos:
8
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 9/19
Laboratorio – 03
cantidad1 = Range("a2")
cantidad2 = Range("a3")
cantidad3 = Range("a4")
precio1 = Range("b2")
precio2 = Range("b3")
precio3 = Range("b4")
precio4 = Range("b5")
unid = Range("b8")
9
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 10/19
Laboratorio – 03
Else
Range("b9") = precio4
Range("b10") = precio4 * unid
End If
La macro sigue los limites puestos, si se compran 999 unidades pues el precio que le asigna
es de 10 y s u precio total lo saca multiplicando las unidades por el precio asignado. Si las
unidades pasan los 10000 le da el precio indicado de 8 y saca su precio total de la misma
forma multiplicando unidades por precio.
Ejemplo 4. En una nueva hoja de cálculo nos encargaremos de crear dos macros que calculen ciertos
beneficios para los trabajadores: (para la ejecución de las macros puede crear botones de comando)
Toda el área comercial se desplaza constantemente para cubrir rutas según zonas, los
puestos de mando medio en adelante utilizan su movilidad propia y los demás usan el
transporte público para realizar este recorrido mensual.
Se asigna a cada uno un monto específico: Si el sueldo está por encima de los 2500 soles,
el monto asignado será de 600 soles. Si está por debajo de 2500 soles, el monto será de
450 soles.
Cree una macro (calc_movilidad) con el siguiente código:
10
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 11/19
Laboratorio – 03
End If
o Usando como referencia el código anterior, cree una nueva macro (nombre según su
criterio), la que permita calcular la alimentación según las siguientes pautas: Si el
colaborador tiene un sueldo menor a 2000 soles se le cubre al 100% la alimentación en el
concesionario de la empresa, por lo que el beneficio es de 200 soles. Si tiene un sueldo
mayor a 2000 soles, la alimentación se cubre al 50% por lo que el beneficio sería sólo de
100 soles. Generar una ventana de mensaje (MsgBox) mostrando, como mensaje, la
explicación del monto asignado.
o Indique a continuación el código creado de la macro
Sub m_decision_multiple()
Dim a As Integer
a = Range("A1").Value
Select Case a
Case 0 To 10
Range("E2").Value = "Desaprobado"
Case 11 To 12
Range("E2").Value = "Regular"
Case 13 To 16
Range("E2").Value = "Bueno"
Case 17 To 19
Range("E2").Value = "Excelente"
Case 20
Range("E2").Value = "Sobresaliente"
Case Else
Range("E2").Value 11= "No aplica"
End Select
End Sub
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 12/19
Laboratorio – 03
En la hoja de cálculo activa ingrese un valor en la celda A1, ejecute la macro y verifique los resultados
generados
Con esta instrucción, resuelva el Ejemplo 3 de la anterior sección. Indique a continuación el código
generado.
Implementar una nueva macro denominada m_bucle_for_each() que rellene el rango de celdas
seleccionadas con valores enteros pares iniciando en el valor 100. A continuación se indica el código :
Sub m_bucle_for_each()
Dim contador As Integer
contador = 100
For Each celda In Selection.Cells
celda.Value = contador
contador = contador + 2
Next
End Sub
12
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 13/19
Laboratorio – 03
Implementar una nueva macro denominada m_bucle_for() que genere una tabla de multiplicar. A
continuación se indica el código :
Sub m_bucle_for()
Dim contador As Integer
Range("A1").Value = "Tabla de multiplicar del 5"
For contador = 1 To 12
Cells(contador + 1, 1).Value = 5
Cells(contador + 1, 2).Value = "x"
Cells(contador + 1, 3).Value = contador
Cells(contador + 1, 4).Value = "="
Cells(contador + 1, 5).Value = 5 * contador
Next contador
End Sub
13
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 14/19
Laboratorio – 03
En una nueva hoja de cálculo, cree una nueva macro con nombre m_bucle_for2
Ingresar en la ventana de código que corresponde lo siguiente:
En una nueva hoja de cálculo, Implementar una nueva macro denominada m_bucle_for3. A
continuación se indica el código
For CONTADOR = 10 To 1 Step -1
fila = CONTADOR
Cells(fila, 3) = CONTADOR
Next
El código nos permite tener una lista de números del 1 al 10, la diferencia es
que va restando del 10 hasta llegar al 1.
Se colocó la información en la columna C según el código: Cells (fila, 3 )=
CONTADOR
En una nueva hoja de cálculo, implementar una nueva macro denominada m_bucle_for4. A
continuación se indica el código
Implementar una nueva macro denominada m_bucle_do_while() que genere una tabla de
multiplicar. A continuación se indica el código :
Sub m_bucle_do_while()
Dim contador As Integer
contador = 1
Range("A1").Value = "Tabla de multiplicar del 7"
Do While contador <= 12
Cells(contador + 1, 1).Value = 7
Cells(contador + 1, 2).Value = "x"
Cells(contador + 1, 3).Value = contador
Cells(contador + 1, 4).Value = "="
Cells(contador + 1, 5).Value = 7 * contador
contador = contador + 1
Loop
End Sub
Implementar una nueva macro denominada m_bucle_do_until() que genere una tabla de multiplicar.
A continuación se indica el código :
Sub m_bucle_do_until()
Dim contador As Integer
contador = 1
Range("A1").Value = "Tabla de multiplicar del 8"
Do Until contador = 13
Cells(contador + 1, 1).Value = 8
Cells(contador + 1, 2).Value = "x"
Cells(contador + 1, 3).Value = contador
Cells(contador + 1, 4).Value = "="
Cells(contador + 1, 5).Value = 8 * contador
contador = contador + 1
Loop
End Sub
15
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 16/19
Laboratorio – 03
16
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 17/19
Laboratorio – 03
Implemente una macro que enumere en forma correlativa las celdas B7 a B11.
Implemente una macro que calcule el promedio de cada participante.
Implemente una macro que asigne un resultado final a cada participante según la siguiente tabla:
Promedio Resultado
De 0 a 10 Malo
De 11 a 12 Regular
De 13 a 15 Bueno
De 16 a 18 Excelente
De 19 a 20 Sobresaliente
Implemente una macro que determine la cantidad de alumnos aprobados y desaprobados y coloque
dichos valores en celdas disponibles de su hoja que Usted designe.
Implemente una macro que genere una lista con los nombres de los alumnos aprobados. Usted
elegirá las celdas disponibles donde se visualizarán dichos datos (puede ser en una nueva etiqueta)
Implemente una macro que genere una lista con los nombres de los alumnos desaprobados. Usted
elegirá las celdas disponibles donde se visualizarán dichos datos (puede ser en una nueva etiqueta)
Implemente una macro denominada borrar_contenido() que borre todos los resultados obtenidos.
Implemente una macro denominada m_general() que ejecute cada una de las macros creadas
anteriormente (excepto borrar_contenido() ), con la finalidad de ejecutar a través de ella todas las
tareas definidas en forma individual en cada macro.
17
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 18/19
Laboratorio – 03
OBSERVACIONES Y CONCLUSIONES
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
18
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 19/19
Laboratorio – 03
____________________________________________________________________________
19