Это решение соответствует событию Calculation
. Я не совсем уверен, инициирует ли это обновление RTD, поэтому вам нужно будет поэкспериментировать.
Добавьте этот код в модуль Worksheet
, содержащий ваши вызовы RTD.
Сохраняет копию данных листа в памяти из последнего расчета и сравнивает новые значения при каждом расчете.
Он ограничивает свое действие клетками, содержащими вашу формулу.
Option Explicit
Dim vData As Variant
Dim vForm As Variant
Private Sub Worksheet_Calculate()
Dim vNewData As Variant
Dim vNewForm As Variant
Dim i As Long, j As Long
If IsArray(vData) Then
vNewData = Me.UsedRange
vNewForm = Me.UsedRange.Formula
For i = LBound(vData, 1) To UBound(vData, 1)
For j = LBound(vData, 2) To UBound(vData, 2)
' Change this to match your RTD function name
If vForm(i, j) Like "=YourRTDFunction(*" Then
If vData(i, j) <> vNewData(i, j) Then
With Me.Cells(i, j).Interior
If .ColorIndex = 3 Then
.ColorIndex = 4
Else
.ColorIndex = 3
End If
End With
End If
End If
Next j, i
End If
vData = Me.UsedRange
vForm = Me.UsedRange.Formula
End Sub