如何同步多个Excelinput单元格

这个问题在2010年被问及回答,但是当我按照古老的Buggabill先生的指示,然后运行macros(通过编辑目标单元格),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下创build了一个版本的macros(将Sheet2上的目标值推送到A1)和另一个版本的Sheet2下的macros(反过来)。 只有一个macros就位,这工作正常,但我的意图是能够在任何一个工作表上input一个值,并有新的价值传播到两个input单元格。 Excel崩溃,因为它是一个循环引用,对不对? 有没有解决的办法?

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

您可能会考虑closures执行内部macros的事件。

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

这样,另一个事件处理程序不会在您将值插入到另一个表中时被调用。

只要在第一个里面添加另一个。

 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 

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

Interesting Posts