Excel VBA目标单元格上的更改,然后忽略

我有一个macros,检测单元格更改时,并将此号码添加到它上面的单元格。

然而,我需要清除原来的单元格,当单元格被再次更改时,它总是再次触发macros指令,并且最终导致无限循环。 有没有办法在macros运行时“忽略”其他单元格更改?

Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("B3:O3") If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then If Range(Target.Address).Cells.Count = 1 Then Range(Target.Address).Offset(-1).Value = Range(Target.Address).Offset(-1).Value + Range(Target.Address).Value Range(Target.Address).Clear End If End If End Sub 

您可以添加附加条件:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("A3:O3") If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing And Range(Target.Address).Value <> "" Then If Range(Target.Address).Cells.Count = 1 Then Range(Target.Address).Offset(-1).Value = Range(Target.Address).Offset(-1).Value + Range(Target.Address).Value Range(Target.Address).Clear End If End If End Sub 

或者直接添加Application.EnableEvents ,如下所示:

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("B3:O3") If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then If Range(Target.Address).Cells.Count = 1 Then Application.EnableEvents = False Range(Target.Address).Offset(-1).Value = Range(Target.Address).Offset(-1).Value + Range(Target.Address).Value Range(Target.Address).Clear Application.EnableEvents = True End If End If End Sub