Notifications
Clear all

Loop condicional para verificar valores entre dois números,

6 Posts
2 Usuários
0 Reactions
1,665 Visualizações
(@brunomotta)
Posts: 26
Eminent Member
Topic starter
 

Caros amigos,
Sou iniciante em VBA.

Estou tentando desenvolver uma automação em vba, para desparar e-mails para os gestores da empresa. Onde na planilha de registro de dados, existe uma coluna ("T2:T2000") que calcula através da função DIAS(), os dias restante para o vencimento. E gostaria de verificar através de uma estrutura de repetição condicional, se há valores maiores que 15 e menores que 180, então chama a sub rotina para disparar o e-mail(este código já tenho configurado para o Office 365), para avisar que existe prazos entre 15 e 180 dias para o vencimento.

Outra ideia, seria se ao encontrar valores que estão contidos entre 15 e 180, uma macro filtra para uma outra sheets("relatorio") somente as linhas onde constam estes valores, e depois envia todo este intervalo em forma de tabela para o email. Assim seria até melhor, pois mostraria exatamente, qual o número da licença se refere.

Não sei se estou pedindo muito, mas preciso da ajuda de vocês, pois eu sei que vocês são feras.

Um abraço, fico no aguardo.

 
Postado : 13/06/2017 8:11 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Segue um exemplo:

Sub Exemplo()
    
    Rem Coluna T= Coluna 20
    Rem Lembre-se Cells(Linha,Coluna)
    
    Dim i       As Double
    
    For i = 2 To 2000
        
        'Se a célula i da coluna 20 for maior que 18 e menor que 180
        If Cells(i, 20) > 18 And Cells(i, 20) < 180 Then
        
            'O seu código aqui
        
        End If
    
    Next i
    
    
End Sub

att,

 
Postado : 13/06/2017 9:59 am
(@brunomotta)
Posts: 26
Eminent Member
Topic starter
 

brunoxro, Muito obrigado, vc é o cara do vba.

Funcionou perfeitamente, poxa era tão simples que nem me dei conta, fiz somente a adaptação para disparar o e-mail.

VALEU!!!!

 
Postado : 13/06/2017 10:43 am
(@brunomotta)
Posts: 26
Eminent Member
Topic starter
 

Chará,
Sem querer abusar do seu conhecimento vba. Eu fiz uma adaptação, para abrir msgbox de aviso, e funcionou direitinho. Mas será que daria para implementar essa adaptação, para mostrar na msgbox o valor referencial de uma célula da mesma linha que foi encontrado o valor.
Exemplo:
Na coluna 2(B), tenho o número da licença, e na 20(T), tenho a quantidade de dias antes do vencimento, se o loop encontrar, por exemplo um valor de <=180 dias, então abre msgbox informando o que "Faltam 180 dias para vencer o prazo para renovação da licença" & (Número da licença(na coluna 2) que faz referência a linha encontrada)"
Pensei no Target.Address, mas não consegui implementar kkkkkk.
Veja como ficou minha adaptação:

Sub AvisoPrazo()
    
    Rem Coluna T= Coluna 20
    Rem Lembre-se Cells(Linha,Coluna)
    Dim W As Worksheet
    Dim Intervalo As Range
    Dim i       As Double
        
    Set W = Sheets("LICENCAS")

Sheets("LICENCAS").Activate

With W

    For i = 2 To 2000
        
        'Se a célula i da coluna 20 for maior que 15 e menor que 180
        If Cells(i, 20) > 0 And Cells(i, 20) < 15 Then
            'MsgBox ("Faltam menos de 15 dias para vencer o prazo para renovação da licença"
        MsgBox ("Existem prazos a vencer em seu banco de dados, menores ou igual a 15 dias.")
        
        Else
        If Cells(i, 20) > 15 And Cells(i, 20) < 30 Then
            MsgBox ("Faltam menos de 30 dias para vencer o prazo para renovação da licença")
        Else
        If Cells(i, 20) > 30 And Cells(i, 20) < 60 Then
            MsgBox ("Faltam menos de 60 dias para vencer o prazo para renovação da licença")
        Else
        If Cells(i, 20) > 60 And Cells(i, 20) < 90 Then
            MsgBox ("Faltam  menos de 90 dias para vencer o prazo para renovação da licença")
        Else
        If Cells(i, 20) > 90 And Cells(i, 20) < 180 Then
            MsgBox (Faltam  menos de 180 dias para vencer o prazo para renovação da licença")
        
        End If
        End If
        End If
        End If
        End If

    Next i
 End With
    
End Sub
 
Postado : 14/06/2017 6:41 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Você teria que colocar um IF com algo assim:

Sub Exemplo02()
   
    Dim i       As Double
   
    i = 2

     If Cells(i, 1) > 180 Then
    
         MsgBox "Faltam 180 dias para vencer o prazo para renovação da licença " & Cells(i, 1).Value
    
     End If
   
End Sub

OBS 01: Use a ferramenta Code para colocar seu código no fórum.
OBS 02: Lembre-se de usar uma Indentação no sue código, fica mais fácil de ler depois.
OBS 03: Poste uma planilha de exemplo, fica mais fácil ajudar.
OBS 04: Se ajudou, não esqueça de marcar o tópico como Resolvido.

att,

 
Postado : 14/06/2017 11:20 am
(@brunomotta)
Posts: 26
Eminent Member
Topic starter
 

brunoxro,

Mais uma vez obrigado amigo, e me desculpe por não usar corretamente os recursos do fórum, mas prometo que da próxima farei direito.

Valeu!

 
Postado : 14/06/2017 12:46 pm