Está en la página 1de 34

SOFTWARE PARA

INGENIEROS
Unidad 1 – Programación
en VBA

Coordinación del curso


Norman Reyes Morales
pcinnrey@upc.edu.pe
Contenido
• 1. INTRODUCCIÓN
1.0 Competencias
1.1 Entorno de programación en VBA y Creación de programas en VBA
1.2 Uso de variables y constantes, asignación de valores.
1.3 Tipos de operadores matemáticos y lógicos
• 2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
2.1 Estructuras selectivas o condicionales simples, dobles y múltiples
2.2 Estructuras repetitivas de entrada y salida controlada, y con contador
implícito.
• 3. ALMACENAMIENTO DE DATOS
3.1 Almacenamiento de datos con estructuras unidimensionales (vectores)
3.2 Almacenamiento de datos con estructuras bidimensionales (matrices)
3.3 Aplicaciones
1. INTRODUCCIÓN
1. INTRODUCCIÓN
1. INTRODUCCIÓN

COMPETENCIA GENÉRICA:
PENSAMIENTO CRÍTICO - Nivel de
logro 1.
Capacidad para conceptualizar, aplicar,
analizar y/o evaluar activa y
hábilmente, información recogida de, o
generada por, la observación,
experiencia, reflexión o razonamiento,
orientado hacia el desarrollo de una
creencia o acción.
1. INTRODUCCIÓN
SO effective 2017-18 and 2018-19 Cycles New Language
Approved by the EAD October 20, 2017
Applicable beginning in the 2019-20 cycle
Criterion 3. Student Outcomes Criterion 3. Student Outcomes
The program must have documented student outcomes that The program must have documented student outcomes that support the program educational objectives.
prepare graduates to attain the program educational objectives. Attainment of these outcomes prepares graduates to enter the professional practice of engineering. Student
Student outcomes are outcomes (a) through (k) plus any outcomes are outcomes (1) through (7), plus any additional outcomes that may be articulated by the program.
additional outcomes that may be articulated by the program.
(a) Aplica los conocimientos en matemáticas, ciencias e 1. an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering,
ingeniería science, and mathematics.
(e) Identifica, formula y resuelve problemas de ingeniería 1. Identifica, formula y resuelve problemas complejos de ingeniería mediante la aplicación de los principios de
ingeniería, ciencias y matemáticas
(b) Diseña y conduce experimentos, analiza e interpreta datos 6. an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering
judgment to draw conclusions.
6. Desarrolla y conduce experimentos, analiza e interpreta datos, y usa criterios de ingeniería para sacar
conclusiones.
(c) Diseña sistemas productivos, componentes o procesos para 2. an ability to apply engineering design to produce solutions that meet specified needs with consideration of
satisfacer necesidades, considerando restricciones y limitaciones public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors.
tales como económico, medioambiente, social, política, ético, 2. Aplica diseños de ingeniería para producir soluciones que satisfagan necesidades específicas teniendo en
seguridad y salud, manufactura y sostenibilidad. cuenta la salud pública, la seguridad y el bienestar, así como los factores globales, culturales, sociales,
ambientales y económicos.
(d) Se integra en equipos multidisciplinarios 5. an ability to function effectively on a team whose members together provide leadership, create a collaborative
and inclusive environment, establish goals, plan tasks, and meet objectives.
5. Se integra de manera efectiva en un equipo cuyos miembros proveen liderazgo, crean un
entorno colaborativo e inclusivo, establecen objetivos, planifican tareas y cumplen objetivos.
(f) Desarrolla sus actividades con responsabilidad ética y 4. an ability to recognize ethical and professional responsibilities in engineering situations and make informed
profesional. judgments, which must consider the impact of engineering solutions in global, economic, environmental, and
societal contexts.
(h) Investiga el Impacto de soluciones de ingeniería dentro de un
4. Reconoce la responsabilidad ética y profesional en situaciones de ingeniería y hace juicios informados, que
contexto global, económico, ambiental y social
deben considerar el impacto de soluciones de ingeniería en contextos globales, económicos, ambientales y
(j) Conoce temas contemporáneos que le permitan mayor dominio
sociales.
en el campo profesional
(g) Se comunica de manera clara y efectiva utilizando el lenguaje 3. an ability to communicate effectively with a range of audiences.
1. INTRODUCCIÓN
Competencias a contribuir el curso de Software para
Ingeniería

COMPETENCIA GENÉRICA: PENSAMIENTO CRÍTICO - Nivel de logro


Capacidad para conceptualizar, aplicar, analizar y/o evaluar activa y hábilmente,
información recogida de, o generada por, la observación, experiencia, reflexión o
razonamiento, orientado hacia el desarrollo de una creencia o acción.

COMPETENCIA ABET (5): SE INTEGRA A EQUIPOS MULTIDISCIPLINARIOS: Se


integra de manera efectiva en un equipo cuyos miembros proveen liderazgo, crean un
entorno colaborativo e inclusivo, establecen objetivos, planifican tareas y cumplen
objetivos.
1. INTRODUCCIÓN
Visual Basic for Aplications (VBA)
Microsoft VBA (Visual Basic para aplicaciones) es el ESTRUCTURA GENERAL DE
código fuente (lenguaje de programación) de Microsoft PROGRAMA
Excel.
Es utilizado para programar aplicaciones Windows y
permite a usuarios y programadores ampliar la Declaración de variables
funcionalidad de programas de la suite Microsoft
Office. Entrada de datos
Permite acceder a las funcionalidades de un lenguaje
orientado a eventos y objetos.
Proceso
Para acceder al entorno de VBA se debe activar la
ficha Programador o Desarrollador y guardar el
Salida de datos
archivo con el tipo “Libro de Excel habilitado para
macros”
1. INTRODUCCIÓN
Visual Basic for Aplications (VBA)

Clic en la ficha Archivo / Opciones

→ personalizar cinta de opciones

Activar ficha Desarrollador


1. INTRODUCCIÓN
Tipos de datos en VBA
1. INTRODUCCIÓN
Declaración de variables y constantes en VBA

n CONST nombre de la constante = Valor

b IGV
a NOMBRE
c
DIM nombre de variable as TIPO
1. INTRODUCCIÓN
Otros comandos (VBA)
esta es una anotación También se puede utilizar el apostrofe ‘
Obtener A= (1,1) DESDE ALGUNA CELDA EXCEL, también puede
indicar un rango y la hoja específica
información o
leer valores A = [A1]
A=
O mediante una ventana de diálogo
Mostrar,
regresar
(1,1) = A Mostrar en una CELDA EXCEL, también puede
información
[A1] = A indicar un rango y la hoja específica

O mediante una ventana de diálogo


1. INTRODUCCIÓN
Funciones de VBA para el manejo de datos
➢ Función val()
Convierte una cadena de texto numérico en el número correspondiente para efectuar con él las operaciones matemáticas
correspondientes
Peso = Val([A2]) # Toma el valor de la celda A2, la convierte a numero y lo asigna a Peso. Si la celda contiene
cadenas de caracteres, entonces devolverá cero
➢ Función round()
Redondea una cifra decimal a la cantidad de decimales indicado en el segundo parámetro
round(Peso, 2) # redondea a dos decimales el valor de la variable peso

➢ Función Ucase()
Convierte un texto a mayúsculas
ucase(“juan”) # devuelve el valor de JUAN

➢ Función Lcase()
Convierte un texto a mayúsculas
ucase(“JOSÉ”) # devuelve el valor de josé
1. INTRODUCCIÓN
Operadores matemáticos
Las operaciones matemáticas se realizan en orden de precedencia de los operadores
matemáticos (jerarquía algebraica):

➢ Potenciación
➢ Multiplicación y división

➢ División entera

➢ Módulo aritmético (residuo o resto)

➢ Suma y resta
1. INTRODUCCIÓN
Ejemplos
➢ Ejemplo 1
Elabore un programa que permita ingresar 2 números y calcule: la suma, el promedio, la resta, el producto, división, división
entera. Léalo desde las celdas y devuelva en celdas.
1. INTRODUCCIÓN
Ejemplos
➢ Ejemplo 2
Evalué la siguiente función en un punto X que le ingresen: f(x) = 4x^3 – 3x^(5/2) + x + 9

Operaciones de 2 numeros Sub Macro2()


Dim x As Double
x 9
‘Lectura de datos
f(x) = 4x^3 – 3x^(5/2) + x + 9 2,205.00 x = Val([C4])
Ejecutar 'Evaluar la función
[c6] = 4 * x ^ 3 - 3 * x ^ (5 / 2) + x + 9
End Sub
1. INTRODUCCIÓN
Ingreso y salida usando instrucciones en VBA
Se puede ingresar y mostrar datos dinámicamente utilizando instrucciones VBA:
➢ InputBox()
edad = val(InputBox(“Ingrese la edad “))

➢ MsgBox()
MsgBox ("El promedio es " & edad)
1. INTRODUCCIÓN
Ejemplos
➢ Ejemplo 3
Elabore una aplicación que ingrese el nombre de un alumno y la nota e indique si aprobó o no
2. ESTRUCTURAS SELECTIVAS
Y REPETITIVAS
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Sentencias Selectivas o condicionales
https://docs.microsoft.com/en-us/office/vba/api/overview/excel

➢ Selectiva simple IF # If A > 10 Then


A=A+1:B=B+A:C=C+B
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If

’ Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ] # If A > 10 Then A = A + 1 : B = B + A : C = C + B
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Ejemplos
➢ Ejemplo 4
Elabore una macro que ingrese la nota promedio de un alumno y muestre los siguientes mensajes: [0,13[ Malo, [13,16[
Regular, [16, 20] Bueno
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Ejemplos
➢ Ejemplo 4
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Sentencias Selectivas - condicionales múltiples
https://docs.microsoft.com/en-us/office/vba/api/overview/excel

➢ Sentencia Case Dim number As Integer = 8


Select Case number
Select [ Case ] testexpression Case 1 To 5
[ Case expressionlist msgbox("Between 1 and 5, inclusive")
[ statements ] ] ‘The following is the only Case clause that evaluates to True.
[ Case Else Case 6, 7, 8
[ elsestatements ] ] msgbox("Between 6 and 8, inclusive")
End Select Case 9 To 10
msgbox("Equal to 9 or 10")
Case Else
msgbox("Not between 1 and 10, inclusive")
End select
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Sentencias Selectivas - condicionales múltiples
Dim number As Integer = 8
Select Case number
Case 1 To 5
msgbox("Between 1 and 5, inclusive")
‘The following is the only Case clause that evaluates to True.
Case 6, 7, 8
msgbox("Between 6 and 8, inclusive")
Case 9 To 10
msgbox("Equal to 9 or 10")
Case Else
msgbox("Not between 1 and 10, inclusive")
End select
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Ejemplos
➢ Ejemplo 5
Elabore una macro que ingrese la nota promedio de un alumno y muestre los siguientes mensajes: [0,13[ Malo, [13,16[
Regular, [16, 20] Bueno, empleando condicionales múltiples
Sub Macro5()
Dim Nota As Integer, R As String
' Ingreso y validación de datos
Nota = Int(Val([C3]))
‘ Proceso
Select Case Nota
Case 0 To 12
R = "Malo"
Case 13 To 15
R = "Regular"
Case 16 To 20
R = "Bueno"
Case Else
R = "Error de datos"
End Select
[C5] = R
End Sub
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Estructuras de control – Salida Controlada:
https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/using-doloop-statements
➢ Do - Loop Until
Hay dos formas de usar la palabra clave Until para verificar una condición en una instrucción Do ... Loop. Puede verificar la
condición antes de ingresar al ciclo (como se muestra en el procedimiento ChkFirstUntil), o puede verificarlo después de
que el ciclo se haya ejecutado al menos una vez (como se muestra en el procedimiento ChkLastUntil).
El bucle continúa mientras la condición sigue siendo False.

Sub ChkFirstUntil() Sub ChkLastUntil()


counter = 0 counter = 0
myNum = 20 myNum = 1
Do Until myNum = 10 Do
myNum = myNum - 1 myNum = myNum + 1
counter = counter + 1 counter = counter + 1
Loop Loop Until myNum = 10
MsgBox "The loop made " & counter & " repetitions." MsgBox "The loop made " & counter & " repetitions."
End Sub End Sub
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Estructuras de control – Entrada Controlada:
https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/using-doloop-statements
➢ Do – While Loop
Hay dos formas de usar la palabra clave While para verificar una condición en una instrucción Do ... Loop. Puede verificar la
condición antes de ingresar al bucle, o puede verificarla después de que el bucle se haya ejecutado al menos una vez. En el
siguiente procedimiento ChkFirstWhile, verifica la condición antes de ingresar al bucle. Si myNum se establece en 9 en
lugar de 20, las declaraciones dentro del bucle nunca se ejecutarán. En el procedimiento ChkLastWhile, las declaraciones
dentro del bucle se ejecutan solo una vez antes de que la condición se convierta en False.

Sub ChkFirstWhile() Sub ChkLastWhile()


counter = 0 counter = 0
myNum = 20 myNum = 9
Do While myNum > 10 Do
myNum = myNum - 1 myNum = myNum - 1
counter = counter + 1 counter = counter + 1
Loop Loop While myNum > 10
MsgBox "The loop made " & counter & " repetitions." MsgBox "The loop made " & counter & " repetitions."
End Sub End Sub
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Estructuras de control – Entrada Controlada:
https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/using-fornext-statements

➢ For – Next
Puede utilizar instrucciones For ... Next para repetir un bloque de declaraciones un número específico de veces. Para
bucles, utilice una variable de contador cuyo valor aumente o disminuya con cada repetición del bucle.
El siguiente procedimiento hace que la computadora Con la palabra clave Step, puede aumentar o disminuir la
emita 50 pitidos. La instrucción For especifica la variable de contador según el valor que especifique. En el
variable de contador y sus valores inicial y final. La siguiente ejemplo, la variable de contador j se incrementa
siguiente instrucción incrementa la variable de en 2 cada vez que se repite el ciclo. Cuando finaliza el ciclo,
contador en 1. el total es la suma de 2, 4, 6, 8 y 10.

Sub TwosTotal()
Sub Beeps()
For j = 2 To 10 Step 2
For x = 1 To 50
total = total + j
Beep
Next j
Next x
MsgBox "The total is " & total
End Sub
End Sub
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS
Ejemplos
Sub Macro6()
➢ Ejemplo 6 Dim Nota As Integer, R As String
Elabore una macro que ingrese la nota promedio de un ' Ingreso y validación de datos
alumno y muestre los siguientes mensajes: [0,13[ Malo, Do
Nota = Int(val(InputBox("Ingrese la nota del alumno [0,20]")))
[13,16[ Regular, [16, 20] Bueno, empleando condicionales
if nota<0 or nota>20 then msgbox(“Dato errado”)
múltiples y validando la nota entre 0 y 20 de lo contrario Loop Until Nota >= 0 And Nota <= 20
que lo solicite nuevamente [C3] = Nota
‘ Proceso
Select Case Nota
Case 0 To 12
R = "Malo"
Case 13 To 15
R = "Regular"
Case 16 To 20
R = "Bueno"
End Select
[C5] = R
End Sub
2. ESTRUCTURAS SELECTIVAS Y REPETITIVAS Sub Macro7()
Dim NE As Integer, C As Integer, Nom As String
Ejemplos Dim Sueldo As Single, S As Single, Prom As Single
' Lectura del numero de empleados
➢ Ejemplo 7 Do
Elabore una macro que solicite el ingrese de los NE = Val(InputBox("Ingrese el numero de empleados a procesar : "))
nombres y sueldos de N empleados y luego If NE <= 0 Then MsgBox "El valor debe ser >0", vbCritical
determine el sueldo promedio. Loop Until NE > 0
[C3] = NE
' Procesar datos de los NE empleados
C = 0: S = 0
Do
C = C + 1: Cells(5 + C, 1) = C
Do
Nom = InputBox("Nombre del empleado " & C)
If Nom = "" Then MsgBox "Debe ingresar un nombre!", vbCritical
Loop Until Nom <> ""
Cells(5 + C, 2) = Nom
Do
Sueldo = Val(InputBox("Ingrese el sueldo de " & Nom))
If Sueldo < 0 Then MsgBox "El sueldo de ser >0", vbCritical
Loop Until Sueldo > 0
Cells(5 + C, 3) = Sueldo
S = S + Sueldo
Loop Until C = NE
Prom = S / NE: [C15] = Prom
3. ALMACENAMIENTO DE
DATOS
3. ALMACENAMIENTO DE DATOS
Arreglo que permite almacenar datos en Arreglo que permite almacenar datos en mas
VECTOR una dimensión MATRIZ de una dimensión

DIM nombre del vector ( índice ) As TIPO DIM nombre de la matriz ( i, j ) As TIPO

DIM edad ( 2, 3) As Integer


DIM código( 6 ) As integer

23 40 12 45 36 02 36
j→
0 1 2 3 4 5 6
i 23 48 12 45


(0,0) (0,1) (0,2) (0,3)
57 64 22 26
DIM código( 1 to 7 ) As integer
(1,0) (1,1) (1,2) (1,3)

23 40 12 45 36 02 36 62 46 45 24
1 2 3 4 5 6 7 (2,0) (2,1) (2,2) (2,3)
3. ALMACENAMIENTO DE DATOS
Ejemplos
➢ Ejemplo 8
Cree un pseudocódigo que permita ingresar n números (sin restricción) y luego, los muestre en el orden inverso a cómo se
ingresaron inicialmente. También, escriba el código en VBA.
Inicio Vector
V(50000) Real, VV(50000) Real Vector V
Repetir VV
Ingresar n 20 -2
Si n <= 0 entonces Mostrar ”Ingrese número mayor a cero”
Hasta n > 0 -5 11
Para i = 1 hasta n
Ingresar V(i) 0 7
Siguiente i
Para i=n hasta 1 Paso -1
48 48
VV(n - i + 1) = V(i) 7 0
Mostrar VV (n - i + 1)
Siguiente i 11 -5
Fin
-2 20
3. ALMACENAMIENTO DE DATOS
Ejemplos
➢ Ejemplo 8
Cree un pseudocódigo que permita ingresar n números (sin restricción) y luego, los muestre en el orden inverso a cómo se
ingresaron inicialmente. También, escriba el código en VBA.
Dim V(1 To 5000), VV(1 To 5000) As Single
Dim i, N As Integer
Do
N = Val(InputBox("Ingrese el numero de elementos"))
[d3] = N
If N <= 0 Then MsgBox ("Ingrese número mayo a cero")
Loop Until N > 0
For i = 1 To N
V(i) = Val(InputBox("Ingrese el dato del elemento: " & i))
Como ejercicio adicional, Cells(5 + i, 2) = V(i)
Next i
codifique el botón Borrar For i = N To 1 Step -1
VV(N - i + 1) = V(i)
Cells(N - i + 1 + 5, 4) = VV(N + 1 - i)
Next i

También podría gustarte