3

早在 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 崩溃是因为它是循环引用,对吧?有没有解决的办法?

4

2 回答 2

4

我怀疑这不是循环引用,而是堆栈溢出;)

您可能会考虑在执行宏时关闭事件。

Application.EnableEvents = False
...
Application.EnableEvents = True

这样,当您将值戳到另一张纸上时,不会调用其他事件处理程序。

于 2013-01-16T01:05:50.630 回答
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

这应该会阻止它在两个值已经匹配时尝试执行。在进行更新之前,它会检查它们是否相同。

于 2013-01-16T01:07:02.110 回答