Mostrando postagens com marcador Código VBA. Mostrar todas as postagens
Mostrando postagens com marcador Código VBA. Mostrar todas as postagens

sexta-feira, 7 de setembro de 2018

Desafio n.º 2 - VBA - Excluir linhas conforme um critério específico

Bom dia amigos,

Hoje temos um grande desafio para solucionar. Temos a seguinte situação-problema: Em uma tabela possuo linhas que quero excluir. Mas não é tão simples assim. Elas devem ser excluídas de acordo com um determinado critério, ou seja, conforme uma palavra específica que vou escolher. Para tanto digite a seguinte tabela:


Depois, insira o seguinte código em um módulo VBA:


Sub Excluir_Linhas()

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

Set Atual = ActiveWorkbook
Set Plan = Atual.Sheets("DESAFIO2")
ultimalinha = Plan.Cells(Rows.Count, "a").End(xlUp).Row
criterio = InputBox("Informe o carro que será excluído:", "CRITÉRIO")

contador = 1

While contador < ultimalinha + 1

    If Plan.Cells(contador, 2).Value = criterio Then
                
                Plan.Rows(contador).Delete
                Else
                contador = contador + 1

    End If

Wend
   
End Sub


Outra forma:

Sub Excluir_Linhas()

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

Application.ScreenUpdating = False


Set Atual = ActiveWorkbook
Set Plan = Atual.Sheets("DESAFIO2")
ultimalinha = Plan.Cells(Rows.Count, "a").End(xlUp).Row
criterio = InputBox("Informe o Estado que será excluído:", "CRITÉRIO")

For contador = ultimalinha To 1 Step -1

    If Plan.Cells(contador, 2).Value = criterio Then
                
                Plan.Rows(contador).Delete
                
    End If

Next

Application.ScreenUpdating = True
   

End Sub

Agora é só criar um botão, atribuir a macro e rodar o seu código. Ele vai excluir as linhas desejadas de acordo com a informação digitada na caixa de entrada (InputBox). Atenção: a palavra escolhida deve estar na coluna "B".

Um forte abraço!

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!!