这个问题是asked and answered back in 2010但是当我按照古老的Buggabill先生的指示然后运行宏(通过编辑目标单元格)时,Excel会立即崩溃。代码如下所示:
Private Sub Worksheet_Change(ByVal target As Range)
If target.Address = "$A$1" Then
ActiveWorkbook.Worksheets("Sheet2").Range(target.Address).Value = target.Value
End If
End Sub
我在Sheet1下创建了一个版本的宏(在Sheet2上将目标值推送到A1),在Sheet2下创建了另一个版本的宏(反过来)。只有一个宏可以正常工作,但我的目的是能够在任一工作表上输入一个值,并将新值传播到两个输入单元格中。 Excel崩溃,因为它是一个循环引用,对吧?有办法解决这个问题吗?
答案 0 :(得分:4)
我怀疑它不是循环引用,而是堆栈溢出;)
您可以考虑在执行宏时关闭事件。
Application.EnableEvents = False
...
Application.EnableEvents = True
这样,当您将值戳到另一个工作表上时,不会调用另一个事件处理程序。
答案 1 :(得分:0)
如果在第一个内部,请添加另一个。
Private Sub Worksheet_Change(ByVal target As Range)
If target.Address = "$A$1" Then
If ActiveWorkbook.Worksheets("Sheet2").Range(target.Address).Value <> target.Value
ActiveWorkbook.Worksheets("Sheet2").Range(target.Address).Value = target.Value
End If
End If
End Sub
这应该阻止它在两个值已经匹配时尝试执行。在进行更新之前,它会检查它们是否相同。