我希望2张纸中的2个单元格始终相等,但是对于任何一个单元格而言,它们都有自己不同的公式或列表或输入。我使用以下代码并且它可以工作,但只需要修复错误。
信息中心表
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
请帮我查一下错误?
答案 0 :(得分:1)
尝试在每个处理程序上设置单元格的值之前添加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
请记住,设置值会覆盖输入的任何公式。
答案 1 :(得分:0)
您可以将工作簿级别事件放在Workbook代码窗格中:
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