Está en la página 1de 15

Ejercicio Examen Excel

Desarrolle un programa en VBA que, a través de los datos que proporcione el usuario, calcule
cuántas disoluciones ácidas, básicas y neutras se han preparado y ofrezca el resultado. El
programa debe hacer lo siguiente:
 Mostrar un mensaje de bienvenida y otro de despedida.
 Preguntar al usuario cuál es el valor de pH de la primera disolución y si quiere
introducir más disoluciones. Continuará haciendo esto hasta que la respuesta sea No.
 Determinará cómo es cada disolución en función de las siguientes categorías: ácida
para pH < 6.5; neutra entre 6.5 y 7.5; y básica por encima de 7.5; y contabilizará
cuántas tiene de cada.
 Cuando tenga todos los valores de pH, ofrecerá un mensaje en el que se indiquen
cuántas disoluciones de cada clase hay. COMANDOS UTILIZADOS
Sub = Para definir una subrutina
Dim… As… = Para guardar una variable. (As Integer porque son números enteros)
MsgBox = Para dar entrada a un mensaje (el 0 es para que aparezca un aceptar y vbYesNo para
que aparezca sí o no)
Input = Para que el usuario Introduzca un dato
Do Loop Until = Para crear un buble hasta que se dé una situación en la que se corta
Select Case = Para distinguir entre distintos casos dentro de un valor de una misma variable

Sub Ejercicio_4()
Dim pH As Integer
Dim a As Integer
Dim n As Integer
Dim b As Integer

a=0
n=0
b=0

Saludo = MsgBox (“Bienvenido a este programa”, 0, “Bienvenido”)


Do
pH = InputBox (“Introduzca el pH de la disolución”)
Select Case pH
Case Is < 6.5
a=a+1
Case 6.5 To 7.5
n=n+1
Case Is > 7.5
b=b+1
End Select
Repuesta = MsgBox (“¿Desea introducir otro pH?”, vbYesNo)

Loop Until Respuesta = vbNo


Final = MsgBox (“Disoluciones ácidas: “ & a & Chr(10) & “Disoluciones neutras: “ & n & Chr(10)
& “Disoluciones básicas” & b, 0, “Resultados”)
Despedida = MsgBox (“¡Hasta pronto!”, 0, “Despedida”)

Ejercicio 1
Diseñar un programa que calcule el precio total de la compra de un producto a partir del
número de unidades compradas, el precio unitario y el IVA, creando los correspondientes
cuadros para introducir las variables y el cuadro con la respuesta final.

Sub Precio_compra()

Dim Cantidad As Integer

Dim Precio, IVA, Total As Single

Precio = InputBox("Introduzca el precio unitario en €", "Precio")

Cantidad = InputBox("Introduzca la cantidad que desea comprar", "Cantidad", 1)

IVA = InputBox("Modifique el tipo impositivo si es necesario", "IVA", 0.21)

Total = Cantidad * Precio + Cantidad * Precio * IVA

resultado = MsgBox("El precio total es: " + Chr(13) + Chr(10) & Total, 0, "Precio final")

End Sub
Ejercicio 2

Diseñar un programa que calcule el cuadrado de un número entero y de un mensaje de


bienvenida y de despedida al usuario:

Sub Potencia()
Dim Numero, Solucion As Integer
Bienvenido = MsgBox(“Bienvenido a la calculadora de cuadrados”,0,”Bienvenida”)
Numero = InputBox("Introduzca un número entero", "Número")
Solucion = Numero * Numero
resultado = MsgBox("El cuadrado es:" + Chr(13) + Chr(10) & Solucion, 0, "Resultado")
Despedida = MsgBox(“Gracias por utilizar nuestro programa”,0,”Despedida”)
End Sub

Ejercicio 3

Crear un programa que calcule las raíces cuadradas de un número

Sub raices()
Dim Numero As Integer
Dim Solucion As Single
Numero = InputBox("Introduzca un número entero", "Número")
If (Numero > 0) Then
Solucion = Numero ^ 0.5
resultado = MsgBox("La raíz cuadrada es:" + Chr(13) + Chr(10) & Solucion, 0, "Resultado")
Else
Error = MsgBox("El dato introducido es incorrecto", 5 + 16, "Error")
End If
End Sub
Ejercicio 4

Crear un programa que calcule el área de un trapecio:

( B+b ) · h
A=
2
Sub trapecio()

Dim basemayor, basemenor As Single

Dim area, h As Single

basemayor = InputBox("Introduzca la longitud de la base mayor", "Base Mayor")

basemenor = InputBox("Introduzca la longitud de la base menor", "Base menor")

h = InputBox("Introduzca la altura", "Altura")

area = ((basemayor + basemenor) * h) / 2

resultado = MsgBox("El resultado es:" + Chr(13) + Chr(10) & area, 0, "Resultado")

End Sub

Ejercicio 5

El número de Reynolds (Re) es un parámetro adimensional que permite establecer si el flujo


de un fluido es laminar o turbulento. Depende de la densidad (ρ) y la viscosidad del fluido
(μ), de la velocidad del flujo (v) y del diámetro de la tubería (D). Todas esas variables se
relacionan entre sí siguiente la siguiente ecuación:

ρ·v·D
ℜ=
μ
Cree un programa de Excel que calcule este número y en función del resultado genere un
mensaje de la forma:

 Si el valor es menor de 2100: “El régimen es laminar”.


 Si el valor está entre 2100 y 10000: “El régimen es de transición”
 Si el valor es mayor de 10000: “El régimen es turbulento”

Sub Reynolds()

Dim d, ro, v, mu, re As Single

d = InputBox("Introduzca el valor del Diámetro de la conducción", "Diámetro")

ro = InputBox("Introduzca el valor de la densidad del fluido", "densidad")

v = InputBox("Introduzca el valor de la velocidad del fluido", "velocidad")


mu = InputBox("Introduzca el valor de la viscosidad del fluido", "viscosidad")

re = (d * ro * v) / mu

Select Case re

Case Is < 1000

resultado = MsgBox("El régimen es laminar")

Case 1000 To 10000

resultado = MsgBox("El régimen es de transición")

Case Is > 10000

resultado = MsgBox("El régimen es turbulento")

End Select

End Sub

Ejercicio 6:

Un reactor solar para la producción de H2 a partir de ciclos termoquímicos funciona


correctamente a 800 ºC, por encima de esa temperatura el material se descompone y por
tanto deja de ser activo. Entre 500 y 800 ºC el reactor funciona pero el rendimiento de la
reacción es muy bajo. Por debajo de 500 ºC no se produce reacción por lo que es necesario
calentarlo. Diseñe un programa que pida al usuario la temperatura y le devuelva el mensaje
correspondiente junto con los iconos que se consideren oportunos.

Sub reactor()

Dim temperatura As Single

temperatura = InputBox("Introduzca la temperatura a la que se encuentra el reactor",


"Temperatura reactor")

Select Case temperatura

Case Is < 500

resultado = MsgBox("La temperatura es inferior a la necesaria", vbExclamation, "condiciones")

Case 500 To 800

resultado = MsgBox("La temperatura es correcta", vbOKOnly, "condiciones")

Case Else

resultado = MsgBox("La temperatura es superior a la necesaria. La muestra puede


estropearse", vbCritical, "condiciones")

End Select

End Sub
Ejercicio 7

Diseñe un programa que le pida al usuario que introduzca un valor de Set Point para
controlar la temperatura del reactor del ejercicio anterior. Si el valor introducido está por
debajo de 500 o por encima de 1000 deberá mostrarle un mensaje de error al usuario. En
caso contrario no hará nada.

Sub TemperaturaConBucle()

Dim Temp As Single

Do

Temp = InputBox("Introduzca la temperatura de operación en ºC", "Selección de la


Temperatura")

If Temp < 500 Or Temp > 1000 Then

Mensaje = MsgBox("La temperatura debe estar entre 50ºC y 100ºC", vbExclamation + 0,


"Error")

End If

Loop Until Temp >= 500 And Temp <= 1000

End Sub

Ejercicio 8: Diseñe un programa que le pida al usuario un elemento del grupo de los
Anfígenos y le devuelva el peso atómico.

Sub Anfígenos()

Dim Elemento As String

Elemento = InputBox("Escriba el elemento que desea evaluar: ", "Elemento")

Select Case Elemento

Case "Oxígeno"

PA = MsgBox("16 g/mol", 0, "Peso atómico")

Case "Azufre"

PA = MsgBox("32 g/mol", 0, "Peso atómico")

Case "Selenio"

PA = MsgBox("78.96 g/mol", 0, "Peso atómico")

Case "Teluro"

PA = MsgBox("127.6 g/mol", 0, "Peso atómico")


Case "Polonio"

PA = MsgBox("209 g/mol", 0, "Peso atómico")

Case Else

PA = MsgBox("El elemento introducido no es un anfígeno", vbCritical + vbRetryCancel, "Error")

End Select

End Sub

Ejercicio 9

Diseñe un programa que pida al usuario el valor de la presión en atmósferas y lo transforme


a Pa.

Sub presion()

Dim atm, presion As Single

atm = InputBox("Introduzca el valor de la presión en atm", "presión inicial")

presion = atm * 101300

resultado = MsgBox("La presión en pascales es: " + Chr(13) + Chr(10) & presion, 0, "presión
final")

End Sub

Ejercicio 10

Diseñar un programa que calcule la suma y la media de un conjunto de números que el


usuario introduce en un cuadro de datos uno a uno, hasta que el usuario pulsa la opción de
no introducir más números.

Sub DoLoopUntil()

Dim valor, suma, media As Single

Dim n As Integer

suma = 0

n=0

Do
valor = InputBox("Introduzca el siguiente número", "Valores")

suma = suma + valor

n=n+1

respuesta = MsgBox("¿Desea introducir otro número?", vbYesNo, "Siguiente")

Loop Until respuesta = vbNo

media = suma / n

Final = MsgBox("Números procesados = " & n & Chr(10) & "Suma = " & suma & Chr(10) &
"Media = " & media, 0, "Resultado")

End Sub
EJERCICIO 1

Desarrolle un programa en VBA que, a través de los datos que proporcione el usuario, calcule
cuántos elementos conductores, semiconductores y aislantes tiene y ofrezca el resultado. Para
ello debe hacer lo siguiente:

 Preguntar al usuario cuál es la resistividad del primer elemento y si quiere introducir más
elementos. Continuará haciendo esto hasta que la respuesta sea No.
 Determinará cómo es cada elemento en función de las siguientes categorías:
o Conductor si la resistividad es menor de 10-5
o Semiconductor si la resistividad está entre 10-5 y 105
o Aislante si la resistividad es mayor de 105
 Cuando tenga todos los elementos, ofrecerá un mensaje en el que se indiquen cuántos
elementos de cada clase hay.

Sub Resistividad()

Dim Resistividad As Single

Resistividad = InputBox("Introduzca la resistividad del elemento")

Respuesta = MsgBox("¿Desea introducir otro número?", vbYesNo, "Siguiente")

con = 0

semi = 0

ais = 0

While Respuesta = vbYes

Select Case Resistividad

Case Is < 10 ^ (-5)

con = con + 1

Case 10 ^ (-5) To 10 ^ 5

semi = semi + 1

Case Is > 10 ^ 5

ais = ais + 1

End Select

Resistividad = InputBox("Introduzca la resistividad del elemento")

Respuesta = MsgBox("¿Desea introducir otro número?", vbYesNo, "Siguiente")


Wend

Select Case Resistividad

Case Is < 10 ^ (-5)

con = con + 1

Case 10 ^ (-5) To 10 ^ 5

semi = semi + 1

Case Is > 10 ^ 5

ais = ais + 1

End Select

Total1 = MsgBox("Hay " & con & " elementos conductores" + Chr(13) + Chr(10), 0)

Total2 = MsgBox("Hay " & semi & " elementos semiconductores" + Chr(13) + Chr(10), 0)

Total3 = MsgBox("Hay " & ais & " elementos aislantes" + Chr(13) + Chr(10), 0)

End Sub

EJERCICIO 2

El Índice de Cetano (IC) sirve para caracterizar la volatilidad y facilidad de inflamación de los
combustibles utilizados en los motores Diesel y da una idea del tiempo que transcurre entre la
inyección del carburante y el comienzo de la combustión. Cuanto mayor es el índice de cetano,
menor es el retraso de la ignición y mejor es la calidad de la combustión. El IC se puede calcular
a partir de la correlación recogida en la norma ASTM D4737, que tiene la siguiente forma:

IC4737 = 45,2 + 0,0892 T10N + (0,131 + 0,901 B) T50N + (0,0523 - 0,420 B) T90N + 0,00049
(T10N2 - T90N2) + 107 B + 60 B2

Siendo:

D = Densidad a 15 °C [Kg/m3 ].

B = (exp( -0.0035(D - 850)) -1

T10 = Temperatura (ºC) a la que destila el 10%.

T10N = T10 - 215,

T50 = Temperatura (ºC) a la que destila el 50%.


T50N = T50 - 260,

T90 = Temperatura (ºC) a la que destila el 90%.

T90N = T90 - 310.

Crear una subrutina llamada ICLarga que calcule en índice de cetano de un gasóleo, dados los
valores de D, T10, T50 y T90. La macro debe comprobar que todas las variables son positivas
antes de hacer el cálculo y, si no lo son, avisar al usuario de alguna forma. Del mismo modo,
debe comprobar que las temperaturas son crecientes en el orden T10 < T50 < T90 y, si no lo
son, avisar al usuario de alguna forma.

Sub Indice_cetano()

Dim ICLarga, D, T10, T50, T90 As Single

D = InputBox("Introduzca el valor de la densidad", "Densidad")

B = (10 ^ (-0.0035 * (D - 850)))

T10 = InputBox("Introducza el valor de la temperatura a la que destila el 10%", "Temperatura


10%")

T10N = T10 - 215

T50 = InputBox("Introduzca el valor de la temperatura a la que destila el 50%", "Temperatua


50%")

T50N = T50 - 260

T90 = InputBox("Introduzca el valor de la temperatura a la que destila el 90%", "Temperatua


90%")

T90N = T90 - 310

If D < 0 Then

Mensaje = MsgBox("Los valores deben ser positivos", 5 + 16, "Error")

Elself T10 < 0 Then

Mensaje = MsgBox("Los valores deben ser positivos", 5 + 16, "Error")

Elself T50 < 0 Then

Mensaje = MsgBox("Los valores deben ser positivos", 5 + 16, "Error")

Elself T90 < 0 Then

Mensaje = MsgBox("Los valores deben ser positivos", 5 + 16, "Error")

End If
If T10 < T50 < T90 Then

Mensaje = MsgBox("Las temperaturas tienen que ser directamente proporcionales al nivel de


destilación", 5 + 16, "Error")

End If

ICLarga= 45.2 + (0.0892*T10N) + ((0.131 + (0.901*B))*T50N) + ((0.0523-(0.420*B))*T90N) +


(0.00049*((T10N^2) - (T90N^2)))+(107*B) +(60*(B^2))

End Sub

EJERCICIO 3

Cree una macro de Excel que convierta la presión medida en un manómetro a Pascales a partir
de la altura (H) de la columna y la densidad (ρ) del líquido de relleno del manómetro utilizando
la expresión:

P (Pa) = g (m/s2 ) · ρ (Kg/m3 ) · H (m)

 La macro debe pedir al usuario que introduzca la altura de la columna en metros y el


tipo de fluido mediante cuadros de entrada de datos.
 Los fluidos sólo pueden ser: “agua”, “mercurio”, “etanol” o “glicerina”. Si el usuario
introduce uno de estos nombres, el programa utilizará su densidad para calcular la
presión. Las densidades son: 1000, 13560, 789 y 1260 Kg/m3 , respectivamente. Si el
usuario introduce cualquier otra cosa, el programa debe entender que la densidad es
“inválida”.
 Con el valor de la altura y la densidad, el programa debe calcular la presión y mostrarle
el resultado al usuario. Si el fluido es inválido, debe escribir “imposible calcular”.

Sub Pascales()

Dim h, p As Single

Dim D As String

h = InputBox("Altura en metros", "altura")

D = InputBox("Introduzca el tipo de fluido")

Select Case D

Case "agua"
p = 9.8 * 1000 * h

resultado = MsgBox("El resultado es:" + Chr(13) + Chr(10) & p, 0, "Presion")

Case "mercurio"

p = 9.8 * 13560 * h

resultado = MsgBox("El resultado es:" + Chr(13) + Chr(10) & p, 0, "Presion")

Case "etanol"

p = 9.8 * 789 * h

resultado = MsgBox("El resultado es:" + Chr(13) + Chr(10) & p, 0, "Presion")

Case "glicerina"

p = 9.8 * 1260 * h

resultado = MsgBox("El resultado es:" + Chr(13) + Chr(10) & p, 0, "Presion")

Case Else

p = MsgBox("Imposible de calcular", vbCritical + vbRetryCancel, "ERROR")

End Select

End Sub

EJERCICIO 4

Desarrolle un programa en VBA que, a través de los datos que proporciona el usuario le indique
los posibles estados de oxidación de un elemento (usar los de la lista). Para ello debe:

- Preguntar al usuario cuál es grupo de elementos cuyo estado de oxidación quiere conocer y si
quiere saber el de algún grupo más. Continuará haciendo esto hasta que la respuesta sea No.

- Indicará cuál es el estado de oxidación según el elemento introducido.

- Dará un mensaje de bienvenida y despedida al usuario.

DATOS:

Alcalino: +1

Alcalinotérreo: +2

Carbonoideos: -4,4
Nitrogenoideos: -3,3,5

Anfígeno: -2,2,4,6

Halógeno: -1,1,3,5,7

Sub Estados_oxidacion()

Dim Grupo As String

Bienvenido = MsgBox("Bienvenido a la tabla de estados de oxidación", 0, "Bienvenida")

Do

Grupo = InputBox("Introduzca el grupo de elementos cuyo estado de oxidación desea


conocer:")

Select Case Grupo

Case "Alcalinos"

resultado = MsgBox("El grupo tiene estado de oxidacion +1, 0, ""Alcalinotérreos")

Case "Alcalinotérreos"

resultado = MsgBox("El grupo tiene estado de oxidación +2", 0, "condiciones")

Case "Carbonoideos"

resultado = MsgBox("El grupo tiene estado de opxidación -4,4", 0, "condiciones")

Case "Nitrogenoideos"

resultado = MsgBox("El grupo tiene estado de oxidacion -3,3,5", 0, "condiciones")

Case "Anfigenos"

resultado = MsgBox("El grupo tiene estado de oxidación -2,2,4,6", 0, "condiciones")

Case Halogenos

resultado = MsgBox("El grupo tiene estado de oxidación -1,1,3,5,7", 0, "condiciones")

End Select

respuesta = MsgBox("¿Desea introducir otro grupo?", vbYesNo, "Siguiente")

Loop Until respuesta = vbNo

Despedida = MsgBox("Gracias por utilizar nuestro programa", 0, "despedida")


End Sub

También podría gustarte