Установите свой расчет на ручной:
Application.Calculation = xlCalculationManual
И добавьте событие изменения рабочего листа на свой рабочий лист:
Private Sub Worksheet_Change(ByVal Target as Range)
'Checks whether the changed range has an intersection within your desired range:'
Set isect = Application.Intersect(Target, Me.Range("A2:Z3000"))
If Not isect is Nothing then 'ie, there is an intersection, call the calculation.
Application.Calculate
End If
End Sub
Имейте в виду, однако, что ваш саб будет работать всякий раз, когдав вашем рабочем листе любое изменение.