Fala EdsonBR, beleza?
O Worksheet_Calculate funciona, ele faz rodar quando chegam novos dados, inclusive é o que atualmente está funcionando aqui
Ah, se a RTD dispara o Calculate então fica mais claro o que vc precisa.
O principal problema a contornar é que infelizmente o evento Worksheet_Calculate não dispõe de um argumento Target tal como o Worksheet_Change possui, então temos que lançar mão de algum artifício para descobrirmos se um determinado intervalo sofreu ou não alteração.
Vamos tomar seu intervalo A1:G1 da Plan1 como exemplo.
Há pelo menos três maneiras de contornar isso:
Primeiro método:
Option Explicit
Public ValAnterior As Variant
Private Sub Workbook_Open()
ValAnterior = Plan1.Range("A1:G1").Value
End Sub
No módulo da Plan1:
Option Explicit
Private Sub Worksheet_Calculate()
Dim i As Byte
For i = 1 To 7
With Me.Range("A1:G1")
If .Cells(i) <> EstaPasta_de_trabalho.ValAnterior(1, i) Then
MsgBox "Ocorreram mudanças em A1:G1, célula:" & vbCrLf & _
.Cells(i).Address(False, False)
EstaPasta_de_trabalho.ValAnterior(1, i) = .Cells(i)
End If
End With
Next i
End Sub
[/*:m:u01tsslt][/list:u:u01tsslt]
Terceiro Método:
- Através da criação de uma classe criando armadilhas de evento para a Plan1 focada no intervalo A1:G1 (por ser mais trabalhosa, deixemos como uma opção a mais, caso esteja interessado).[/*:m:u01tsslt][/list:u:u01tsslt]
Postado : 19/03/2018 10:00 am