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