Usuário com melhor resposta
executar macro após formula atualizar célula

Pergunta
-
Bom dia,
Caros colegas, desenvolvi uma planilha de tarefas com deadlines que conforme o prazo vai ficando próximo ela dispara e-mails de follow-up para os responsáveis
O problema é que a macro só funciona quando eu aperto um "F2, ENTER"
E deveria funcionar de acordo com a atualização automática através de formulas relacionadas com =AGORA()
Alguém poderia me indicar o que eu estou fazendo de errado?
Private Sub Worksheet_Change(ByVal Target As Range)
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 = "$I$" & linha Then
'Atrasado
If Plan1.Cells(linha, 9) = "Atrasado" Then
texto = "Prezado(a) " & Plan1.Cells(linha, 7) & "," & vbCrLf & vbCrLf & _
"O status da sua tarefa " & Plan1.Cells(linha, 2) & vbCrLf & _
"Com a descrição: " & Plan1.Cells(linha, 6) & vbCrLf & _
"foi alterado para atrasado." & vbCrLf & _
"Favor, assim que finalizar sua tarefa, responder com o documento comprobatorio para atualização do seus stats" & vbCrLf & _
vbCrLf & _
vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Dpto Tributario"
With OutMail
.To = Plan1.Cells(linha, 7)
.CC = "dirce.lopes@hilti.com;BRallTAX@hilti.com"
.BCC = ""
.Subject = "ATUALIZAÇÃO STATUS TAREFA - " & Plan1.Cells(linha, 2)
.Body = texto
.display 'Utilize Send para enviar o email sem abrir o Outlook
End With
'faltam 3 dias
ElseIf Plan1.Cells(linha, 9) = "Atenção 3" Then
texto = "Prezado(a) " & Plan1.Cells(linha, 7) & "," & vbCrLf & vbCrLf & _
"O status da sua tarefa " & Plan1.Cells(linha, 2) & vbCrLf & _
"Com a descrição: " & Plan1.Cells(linha, 6) & vbCrLf & _
"foi alterado para Atenção." & vbCrLf & _
"Faltam 3 dias para você finalizar esta tarefa" & vbCrLf & _
vbCrLf & _
vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Dpto Tributario"
With OutMail
.To = Plan1.Cells(linha, 7)
.CC = "dirce.lopes@hilti.com;BRallTAX@hilti.com"
.BCC = ""
.Subject = "ATUALIZAÇÃO STATUS TAREFA - " & Plan1.Cells(linha, 2)
.Body = texto
.display 'Utilize Send para enviar o email sem abrir o Outlook
End With
'falta 1 dia
ElseIf Plan1.Cells(linha, 9) = "Atenção 1" Then
texto = "Prezado(a) " & Plan1.Cells(linha, 7) & "," & vbCrLf & vbCrLf & _
"O status da sua tarefa " & Plan1.Cells(linha, 2) & vbCrLf & _
"Com a descrição: " & Plan1.Cells(linha, 6) & vbCrLf & _
"foi alterado para Atenção." & vbCrLf & _
"Falta 1 dias para você finalizar esta tarefa" & vbCrLf & _
vbCrLf & _
vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Dpto Tributario"
With OutMail
.To = Plan1.Cells(linha, 7)
.CC = "dirce.lopes@hilti.com;BRallTAX@hilti.com"
.BCC = ""
.Subject = "ATUALIZAÇÃO STATUS TAREFA - " & Plan1.Cells(linha, 2)
.Body = texto
.display 'Utilize Send para enviar o email sem abrir o Outlook
End With
'prazo encerra hoje
ElseIf Plan1.Cells(linha, 9) = "Atenção" Then
texto = "Prezado(a) " & Plan1.Cells(linha, 7) & "," & vbCrLf & vbCrLf & _
"O status da sua tarefa " & Plan1.Cells(linha, 2) & vbCrLf & _
"Com a descrição: " & Plan1.Cells(linha, 6) & vbCrLf & _
"foi alterado para Atenção." & vbCrLf & _
"Hoje encerra seu prazo para finalizar esta tarefa" & vbCrLf & _
vbCrLf & _
vbCrLf & _
"Atenciosamente," & vbCrLf & _
"Dpto Tributario"
With OutMail
.To = Plan1.Cells(linha, 7)
.CC = "dirce.lopes@hilti.com;BRallTAX@hilti.com"
.BCC = ""
.Subject = "ATUALIZAÇÃO STATUS TAREFA - " & Plan1.Cells(linha, 2)
.Body = texto
.display 'Utilize Send para enviar o email sem abrir o Outlook
End With
End If
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End If
MsgBox "E-mail enviado com sucesso!"
End Sub
- Editado Fábio Terasaka quinta-feira, 3 de setembro de 2015 13:33 Erro na formula
Respostas
-
Em outras palavras, você quer executar a macro sempre, de qualquer jeito, né?
Coloca então no evento SelectionChange.
Mas aí corre o risco da planilha ficar inutilizável, mais ainda do que está agora: a cada movimento do cursor, ele interage com uma instância do Outlook.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:33
Todas as Respostas
-
Experimente utilizar o evento Worksheet_Calculate. É disparado assim que a planilha recalcula.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Fábio Terasaka quinta-feira, 3 de setembro de 2015 16:56
- Não Marcado como Resposta Fábio Terasaka quinta-feira, 3 de setembro de 2015 17:12
-
-
Em outras palavras, você quer executar a macro sempre, de qualquer jeito, né?
Coloca então no evento SelectionChange.
Mas aí corre o risco da planilha ficar inutilizável, mais ainda do que está agora: a cada movimento do cursor, ele interage com uma instância do Outlook.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 5 de novembro de 2015 15:33