Well unfortunately DDE updates won't function for me (obviously) but I what I would say is that given the >=1 trigger you could think of using a Static variable in your Worksheet_Calculate event - this will persist during the Excel "session" - this Static variable can (in effect) hold the value of the Trigger prior to current calculation and compare to current value as and when calculation is invoked... when the current Trigger value <> Static / Prior value AND the current trigger value >= 1 then (and only then) would you conduct the snapshot.
Private Sub Worksheet_Calculate()
Static boolPrior As Boolean, boolCurrent As Boolean
boolCurrent = Range("B21") >= 1
If boolCurrent = boolPrior Then Exit Sub Else boolPrior = boolCurrent
On Error GoTo ExitPoint
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
If boolCurrent Then
Range("B1,B3,B5,B7,B9,B11,B13,B15,B17,B19").Copy
With Sheets("Sheet1")
.Cells(.Rows.Count, "A").End(xlUp).Offset(1).Resize(, 10).PasteSpecial xlPasteValues, Transpose:=True
.Cells(.Rows.Count, "A").End(xlUp).End(xlToRight).Offset(, 1).Value = Now
End With
Application.CutCopyMode = False
End If
ExitPoint:
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
hopefully that gives pointers if nothing else...
(and to clarify DDE updates don't invoke the standard Change event... only the Calculate event (like other "standard" formulae))
Bookmarks