Professional Documents
Culture Documents
DD-106
Página 1/18
Laboratorio – 04
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 Laboratorio_04
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 Create.
1
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 2/18
Laboratorio – 04
Una vez abierto el entorno de VBA, ingresar el código siguiente dentro del procedimiento (macro)
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
2
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 3/18
Laboratorio – 04
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/18
Laboratorio – 04
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 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/18
Laboratorio – 04
Anote a continuación los detalles que considere más importantes del ejercicio realizado:
5
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 6/18
Laboratorio – 04
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 condiciones Dim rpta As Boolean
es verdadera rpta = casado Or (edad > 30)
Xor Evalúa si una de dos condiciones 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/18
Laboratorio – 04
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("C3").Value = "Los valores son iguales"
Else
Range("C3").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/18
Laboratorio – 04
Sub descuento_tardanza()
Dim llegada, descuento As Integer
hora = ActiveCell.Value
llegada = Minute(hora)
If llegada > 10 Then
descuento = llegada - 5
MsgBox "Se le descontará " & descuento & " minutos el día de hoy"
Else
MsgBox "Gracias por su puntualidad"
End If
End Sub
o Cambie una hora de llegada a las 08:09 horas y ejecute nuevamente la macro sobre esa
hora. ¿Qué resultado obtiene?
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:
Sub cmd_descuento_volumen ()
Dim cantidad1 As Double
Dim cantidad2 As Double
Dim cantidad3 As Double
Dim precio1 As Double
Dim precio2 As Double
Dim precio3 As Double
Dim precio4 As Double
Dim unid As Double
cantidad1 = Range("a2")
cantidad2 = Range("a3")
cantidad3 = Range("a4")
precio1 = Range("b2")
precio2 = Range("b3")
precio3 = Range("b4")
precio4 = Range("b5")
unid = Range("b8")
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)
9
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 10/18
Laboratorio – 04
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:
Sub calc_movilidad()
Dim sueldo As Integer
sueldo = Cells(ActiveCell.Row, ActiveCell.Column - 1).Value
If sueldo >= 2500 Then
ActiveCell = 600
Else
ActiveCell = 450
End If
End Sub
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
10
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 11/18
Laboratorio – 04
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 = "No aplica"
End Select
End Sub
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 :
11
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 12/18
Laboratorio – 04
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
Implementar una nueva macro denominada m_bucle_for() que genere una tabla de multiplicar en la
hoja 3. 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
12
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 13/18
Laboratorio – 04
En una nueva hoja de cálculo, Implementar una nueva macro denominada m_bucle_for3. A
continuación se indica el código
Guarde los cambios y regrese a Excel
En una nueva hoja de cálculo, implementar una nueva macro denominada m_bucle_for4. A
continuación se indica el código
13
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 14/18
Laboratorio – 04
Implementar una nueva macro denominada m_bucle_do_while() que genere una tabla de multiplicar
en una nueva hoja de cálculo. 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
en una nueva hoja de cálculo. A continuación se indica el código :
14
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 15/18
Laboratorio – 04
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/18
Laboratorio – 04
Implemente una macro denominada m_cadenas() que permita verificar el funcionamiento de las
principales funciones de manejo de cadenas indicadas en la tabla anterior. Anote el código usado.
Agregue la instrucción MsgBox para mostrar los diversos resultados.
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 participantes 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.
16
EXCEL AVANZADO CON MACROS Nro. DD-106
Página 17/18
Laboratorio – 04
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/18
Laboratorio – 04
OBSERVACIONES
CONCLUSIONES
18