Excel VBA目标单元格发生更改,然后忽略
我有一个宏,它可以检测一个单元格何时被更改,并将这个数字添加到它上面的单元格中 然而,我需要清除原始单元格,当该单元格再次被更改时,它总是再次触发宏,我结束了一个无休止的循环。在宏运行时,是否有办法“忽略”任何其他单元格更改Excel VBA目标单元格发生更改,然后忽略,vba,excel,Vba,Excel,我有一个宏,它可以检测一个单元格何时被更改,并将这个数字添加到它上面的单元格中 然而,我需要清除原始单元格,当该单元格再次被更改时,它总是再次触发宏,我结束了一个无休止的循环。在宏运行时,是否有办法“忽略”任何其他单元格更改 Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("B3:O3") If Not Application.Intersect(Ke
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
Private子工作表\u更改(ByVal目标作为范围)
暗淡的关键单元格作为范围
设置关键单元=范围(“A3:O3”)
如果不是Application.Intersect(keycell,Range(Target.Address))则为Nothing,Range(Target.Address).Value则为“”
如果Range(Target.Address).Cells.Count=1,则
范围(Target.Address).偏移量(-1).值=范围(Target.Address).偏移量(-1).值+范围(Target.Address).值
范围(目标地址)。清除
如果结束
如果结束
端接头
或只需添加应用程序。如下所示启用事件:
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
您可以使用Application.EnableEvents
阻止循环发生。添加附加条件仍会触发更改事件3次。一种有趣的方法,但效率不高。