domingo, 5 de agosto de 2018

Desafio n.º 1 - VBA - Calcular média e situação de alunos em uma sala de aula

Boa noite amigos,


O nosso Desafio n.º 1 é o seguinte: Em uma sala de aula temos diversos alunos. Todos serão avaliados de acordo com duas provas. Eu preciso saber a média final e a situação dos alunos após a aplicação dessas duas notas (aprovado ou final). Temos a seguinte tabela antes da aplicação da macro (Figura 1):


E após a execução da macro temos o seguinte resultado (Figura 2):


Para que essa "mágica" aconteça, preencha os nomes e as notas dos alunos de acordo com a figura 1 acima e insira o seguinte código em um módulo VBA:

a) Primeiro botão (calcular média e situação):

Sub media_final() 

Dim contador As Long
Dim ultimalinha As Long
Dim Plan As Worksheet
Dim Atual As Workbook

Set Atual = ActiveWorkbook
Set Plan = Atual.Sheets("NOTAS")
ultimalinha = Plan.Cells(Rows.Count, "a").End(xlUp).Row

For contador = 1 To ultimalinha - 1

Plan.Range("D1").Offset(contador, 0) = (Plan.Range("C1").Offset(contador, 0) + Plan.Range("B1").Offset(contador, 0)) / 2
     
     If Plan.Range("D1").Offset(contador, 0).Value >= 7 Then
     
        Plan.Range("E1").Offset(contador, 0).Value = "Aprovado"
        
        Else
        
        Plan.Range("E1").Offset(contador, 0).Value = "Final"
        
     End If

Next contador

Plan.Range("D1").Value = "MÉDIA"
Plan.Range("E1").Value = "SITUAÇÃO"

End Sub


b) Segundo botão (Limpar):


Sub Limpar()

Dim contador As Long
Dim ultimalinha As Long
Dim Plan As Worksheet
Dim Atual As Workbook

Set Atual = ActiveWorkbook
Set Plan = Atual.Sheets("NOTAS")
ultimalinha = Plan.Cells(Rows.Count, "a").End(xlUp).Row

For contador = 0 To ultimalinha - 1

    Plan.Range("D1").Offset(contador, 0).ClearContents
    Plan.Range("E1").Offset(contador, 0).ClearContents
             

Next contador


End Sub


Por fim, insira dois botões, atribua a eles as respectivas macros e execute os códigos. Um forte abraço!!