前言
Excel工作表Change事件是最常用的事件代码之一,使用事件代码需要判断的场景基本上可以分为如下两种。
场景1:监测单个单元格
顾名思义,只有某个指定单元格发生变化时,才进行后续的处理。
首先判断发生变化的单元格是为单个单元格,接着使用Target.Address = Range(TARGET_RNG).Address作为判断条件,判断是否为指定的单元格,如果需要监测其他单元格,只需要修改常量 TARGET_RNG。
Private Sub Worksheet_Change(ByVal Target As Range)
Const TARGET_RNG = "A1"
Application.EnableEvents = False
With Target
If .Count = 1 Then
If .Address = Range(TARGET_RNG).Address Then
' Your Code
End If
End If
End With
Application.EnableEvents = True
End Sub
场景2:监测指定区域
如果需要监测某个单元格区域,例如:A5:B10的单元格区域内的某个单元格发生变化时,运行相关代码,可以使用下面的代码。这个应用场景可以兼容“场景1”。
Private Sub Worksheet_Change(ByVal Target As Range)
Const TARGET_RNG = "A5:B10"
Application.EnableEvents = False
With Target
If .Count = 1 Then
Set c = Application.Intersect(Range(TARGET_RNG), Target)
If Not c Is Nothing Then
' Your Code
End If
End If
End With
Application.EnableEvents = True
End Sub