单元格1 =单元格2,单元格2 =单元格1,两者都有不同的input法,Excel VBA

我希望两张纸上的2个单元总是相等的,但任何一个都有自己不同的公式或列表或input。 我正在使用下面的代码,它的工作原理,但只需要修复错误。

仪表板

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address = "$I$20" Then Sheets("Questionnaire").Range("$AH$15") = Sheets("Dashboard").Range("$I$20").Value End If End Sub 

问卷表

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address = "$AH$15" Then Sheets("Dashboard").Range("$I$20") = Sheets("Questionnaire").Range("$AH$15").Value End If End Sub 

请帮我看看这个错误?

在每个处理器上设置单元格的值之前,尝试添加Application.EnableEvents = False,例如:

仪表板

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address = "$I$20" Then Application.EnableEvents = False Sheets("Questionnaire").Range("$AH$15") = Sheets("Dashboard").Range("$I$20").Value Application.EnableEvents = True End If End Sub 

问卷表

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address = "$AH$15" Then Application.EnableEvents = False Sheets("Dashboard").Range("$I$20") = Sheets("Questionnaire").Range("$AH$15").Value Application.EnableEvents = True End If End Sub 

请记住,设置一个值将覆盖所有input的公式。

您可以使用工作簿级别事件放置在工作簿代码窗格中:

 Private Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Source As Range) Select Case sh.Name & Source.Address Case "Dashboard$I$20" Equalize "Questionnaire", "$AH$15", Source Case "Questionnaire$AH$15" Equalize "Dashboard", "$I$20", Source End Sub Sub Equalize(targetShName As String, targetCellAddr As String, source As Range) Application.EnableEvents = False Sheets(targetShName).Range(targetCellAddr).Value = source.Value Application.EnableEvents = True End If