相互 link 三个单元格 --> 无限循环?

Mutually link three cells --> infinite loop?

我正在以两种方式 linking 多个单元格,这意味着如果我更改一个单元格,另一个单元格将更新,反之亦然。 此代码非常适用于两个单元格

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B" Then
        'Application.EnableEvents = False
        Sht_input.Range("E4").Value = Sht_input.Range("B4").Value
        'Application.EnableEvents = True
    End If

    If Target.Address = "$E" Then
        'Application.EnableEvents = False
         Sht_input.Range("b4").Value = Sht_input.Range("e4").Value
        'Application.EnableEvents = True
    End If
 End Sub

现在,当我尝试 link 三个单元格时,代码进入不定式循环

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$B" Then
        'Application.EnableEvents = False
        Sht_input.Range("E4").Value = Sht_input.Range("B4").Value
        Sht_input.Range("h4").Value = Sht_input.Range("B4").Value
        'Application.EnableEvents = True
    End If

    If Target.Address = "$E" Then
        'Application.EnableEvents = False
        Sht_input.Range("b4").Value = Sht_input.Range("e4").Value
        Sht_input.Range("h4").Value = Sht_input.Range("e4").Value
        'Application.EnableEvents = True
    End If

    If Target.Address = "$H" Then
        'Application.EnableEvents = False
        Sht_input.Range("b4").Value = Sht_input.Range("H4").Value
        Sht_input.Range("e4").Value = Sht_input.Range("H4").Value
        'Application.EnableEvents = True
    End If
End Sub

我试过调试,但我不明白为什么它会回到 "if" 即使不再选择目标单元格。谁能帮帮我?

您需要禁用这些事件。否则它总是运行进入无限循环,单元格值正在改变。是否相同的值无所谓。

Application.EnableEvents = False

If Target.Address = "$B" Then
    Sht_input.Range("E4").Value = Sht_input.Range("B4").Value
    Sht_input.Range("h4").Value = Sht_input.Range("B4").Value
End If

If Target.Address = "$E" Then

    Sht_input.Range("b4").Value = Sht_input.Range("e4").Value
    Sht_input.Range("h4").Value = Sht_input.Range("e4").Value

End If

If Target.Address = "$H" Then
    Sht_input.Range("b4").Value = Sht_input.Range("H4").Value
    Sht_input.Range("e4").Value = Sht_input.Range("H4").Value
End If
Application.EnableEvents = True

注意代码开头和结尾所做的更改。