Usually means that Application.EnableEvents was not disabled and the _Change event kept calling itself
Yep, Probably what's happening.
Sheet1 code:
Option Explicit
Private Sub Worksheet_Calculate()
'Necessary with Formulas in A1
CheckB1
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.enableEvents = False
If Not Intersect(Target, Range("A1")) Is Nothing Then CheckB1 'A1 changed
Application.enableEvents = True
End Sub
Private Sub CheckB1()
If Sheet2.Range("B1") = "" Then Sheet2.Range("B1") = Range("A1")
End Sub
Sheet2 code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.enableEvents = False
If Not Intersect(Target, Range("B1")) Is Nothing Then CheckA1 'B1 changed
Application.enableEvents = True
End Sub
Private Sub CheckA1()
If Range("B1") = "" Then Range(" B1") = Sheet2.Range("A1")
End Sub
BTW, with With Target.Cells(1, 1), What happens when Range("A1:C1") = Range("A2:C2")
That's why I like If Not Intersect(Target, Range("blah")) Is Nothing