Crie um algoritmo para atribuir a média final de um aluno. Considere que a média é ponderada e que no semestre há 3 provas com pesos 3,5,7 respectivamente. Feito o algoritmo, crie uma macro para fazer a interface com Inputbox para inserir as notas e dizer se o aluno foi aprovado ou reprovado. Preveja possíveis erros por inserir valores não numéricos, e interrompa a rotina quando for inserida uma "String" vazia.
Exercício Resolvido
Resolvendo o Problema
-
Criamos quatro variáveis, uma para cada prova e uma para a média final
Dim X As Variant
Dim Y As Variant
Dim Z As Variant
Dim Result As Double
-
Atribuiremos cada uma das variáveis de prova a um Inputbox dentro de um Do Loop, no qual tem como condição de saída a inserção de um valor numérico menor do que dez e maior do que zero. Criamos uma condicional para exibir uma MsgBox indicando input inválido para caso a entrada não seja numérica, ou numérica maior do que dez, ou menor do que zero
Do
X = InputBox("Insira a nota da Prova 1", "SuperExcelVBA")
If Not IsNumeric(X) Or X > 10 Or X < 0 Then
If X = vbNullString Then
Exit Sub
End If
MsgBox "Input inválido! Número maior que 10 ou menor do que 0 ou texto", vbCritical, "SuperExcelVBA"
End If
Loop Until X <= 10 And X >= 0
Do
Y = InputBox("Insira a nota da Prova 2", "SuperExcelVBA")
If Not IsNumeric(Y) Or Y > 10 Or Y < 0 Then
If Y = vbNullString Then
Exit Sub
End If
MsgBox "Input inválido! Número maior que 10 ou menor do que 0 ou texto", vbCritical, "SuperExcelVBA"
End If
Loop Until Y <= 10 And Y >= 0
Do
Z = InputBox("Insira a nota da Prova 3", "SuperExcelVBA")
If Not IsNumeric(Y) Or Z > 10 Or Z < 0 Then
If Z = vbNullString Then
Exit Sub
End If
MsgBox "Input inválido! Número maior que 10 ou menor do que 0 ou texto", vbCritical, "SuperExcelVBA"
End If
Loop Until Z <= 10 And Z >= 0
-
Por fim calculamos a média final e mostramos se o aluno foi aprovado ou reprovado através de um MsgBox
Result = ((X * 3) + (Y * 5) + (Z * 7)) / 15
If Result >= 5 Then
MsgBox "O aluno foi aprovado com média final " & Format(Result, "0.00"), , "SuperExcelVBA"
Else
MsgBox "O aluno foi reprovado e obteve média final " & Format(Result, "0.00"), , "SuperExcelVBA"
End If
Código Consolidado
Sub Resolucao()
Dim X As Variant
Dim Y As Variant
Dim Z As Variant
Dim Result As Double
Do
X = InputBox("Insira a nota da Prova 1", "SuperExcelVBA")
If Not IsNumeric(X) Or X > 10 Or X < 0 Then
If X = vbNullString Then
Exit Sub
End If
MsgBox "Input inválido! Número maior que 10 ou menor do que 0 ou texto", vbCritical, "SuperExcelVBA"
End If
Loop Until X <= 10 And X >= 0
Do
Y = InputBox("Insira a nota da Prova 2", "SuperExcelVBA")
If Not IsNumeric(Y) Or Y > 10 Or Y < 0 Then
If Y = vbNullString Then
Exit Sub
End If
MsgBox "Input inválido! Número maior que 10 ou menor do que 0 ou texto", vbCritical, "SuperExcelVBA"
End If
Loop Until Y <= 10 And Y >= 0
Do
Z = InputBox("Insira a nota da Prova 3", "SuperExcelVBA")
If Not IsNumeric(Y) Or Z > 10 Or Z < 0 Then
If Z = vbNullString Then
Exit Sub
End If
MsgBox "Input inválido! Número maior que 10 ou menor do que 0 ou texto", vbCritical, "SuperExcelVBA"
End If
Loop Until Z <= 10 And Z >= 0
Result = MediaFinal(X, Y, Z)
If Result >= 5 Then
MsgBox "O aluno foi aprovado com média final " & Format(Result, "0.00"), , "SuperExcelVBA"
Else
MsgBox "O aluno foi reprovado e obteve média final " & Format(Result, "0.00"), , "SuperExcelVBA"
End If
End Sub
Function MediaFinal(X As Variant, Y As Variant, Z As Variant)
MediaFinal = ((X * 3) + (Y * 5) + (Z * 7)) / 15
End Function
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE