Atualização de celu...
 
Notifications
Clear all

Atualização de celula

7 Posts
3 Usuários
0 Reactions
1,753 Visualizações
(@danilson-vitor)
Posts: 34
Trusted Member
Topic starter
 

Boa note, estou na criação de um projeto onde se resume em enviar um e-mail toda vez que a data vencimento de for superior a data atualizada do sistema.
já consegui rodar um relógio em tempo real onde ligado com função SE, ao vencer esse o prazo ele muda o texto de "normal" para "vencido".
beleza agora que vem a bronca se eu escrever no campo "vencido" e pressionar a tecla enter o sistema de enviar e-mail funcionando perfeitamente porém se ele for atualizado pelo relógio não acontece nada. mas se click duas vezes na celular e der enter o sistema funciona.

tipo preciso entra no modo de edição da celular e sair clicando fora ou pressionado tecla enter para funcionar.

sem mas conto com ajuda de vocês

 
Postado : 18/01/2018 9:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Danilson, sem conhecer as rotinas que está utilizando fica dificil, talvez esteja utilizando no evento errado, para que uma rotina execute quando alguma celula é alterada por formula o ideal seria utilizar o Evento "Worksheet_Calculate" ou dependendo da rotina ativar e desativar ou forçar o calculo automático utilizando "Application.Calculate".

[]s

 
Postado : 19/01/2018 5:11 am
(@klarc28)
Posts: 0
New Member
 

Anexe o arquivo

 
Postado : 19/01/2018 5:18 am
(@danilson-vitor)
Posts: 34
Trusted Member
Topic starter
 

segue o anexo

 
Postado : 19/01/2018 9:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pelo o que entendi, foi como eu comentei antes, tem de trocar o Evento Change para o Calculate, então apague e troque por esta :

Private Sub Worksheet_Calculate()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim texto As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    linha = ActiveCell.Row - 1
    'If Target.Address = "$F$" & linha Then '

        If Plan1.Cells(linha, 7) = "Concluído" Then
            texto = "Prezado(a) " & Plan1.Cells(linha, 1) & "," & vbCrLf & vbCrLf & _
                    "A O.S. " & Plan1.Cells(linha, 7) & " aberta em " & _
                    Plan1.Cells(linha, 2) & " foi concluída." & vbCrLf & _
                    " Veja informações abaixo:" & vbCrLf & _
                    "    Status: " & Plan1.Cells(linha, 6) & vbCrLf & _
                    "    Ação tomada: " & Plan1.Cells(linha, 5) & vbCrLf & vbCrLf & _
                    "Atenciosamente," & vbCrLf & _
                    "Vical Transportes"
        'End If

        With OutMail
            .To = "" & Plan1.Cells(linha, 1) & ""
            .CC = "" & Plan1.Cells(linha, 2) & ""
            .BCC = ""
            .Subject = "Título do email"
            .Body = texto
            .Display   'Utilize Send para enviar o email sem abrir o Outlook
        End With
        On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing
    End If

End Sub

Faça os testes se é isto, apesar de achar 1 segundo tempo muito curto.

[]s

 
Postado : 19/01/2018 12:44 pm
(@danilson-vitor)
Posts: 34
Trusted Member
Topic starter
 

Adiantei o relógio do pc para 20/01/2018 23:59:00 para alterar automaticamente mas não funcionou acho que tem haver com a mudança de nome através da formula já que ela e alterada internamente sem ter que tocar no mouse ou tecla no teclado

 
Postado : 19/01/2018 1:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Danilson, acontece que qdo você aciona o relogio e a celula A1 é atualizada é executada a rotina, e após alterar o tempo novamente, a rotina é executada novamente, só que sua rotina alem de estar utilizando activecell, sempre que a rotina for executada ela é reiniciada então teremos a verificação somente de uma celula.

 
Postado : 19/01/2018 2:01 pm