我需要用Workbook_SheetChange
检测单元格的值已经改变。
当双击任何单元格时也会触发此事件。我想避免这种情况,因为当这样做时,单元格并没有真正改变,直到你输入一个新的值。
有没有办法在事件中避免这种情况?
请在表单代码模块中复制接下来的两个事件和一个Private
变量:
Option Explicit
Private PrevVal As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.cells.count > 1 Then Exit Sub
If CStr(Target.Value) = PrevVal Then Exit Sub
Debug.Print "Changed..."
'your code in case of a real change...
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.cells.count > 1 Then Exit Sub
PrevVal = CStr(Target.Value)
End Sub
SelectionChange
事件将把选定的单元格值放在PrevVal
变量中,该变量将用于将以前的值与Change
事件中的"结果"值进行比较。
它将不处理多个单元格选择的情况。在某些情况下,以前的值是不可能被记住的。将多个单元格区域复制到现有区域时,仅选择一个单元格…
只有当与之前选择的所要覆盖的范围完全一致时,
才可以处理这种情况。.
您可以使用Worksheet_BeforeDoubleClick
&Worksheet_Change
检查单元格值是否真的发生了变化,或者只是双击了它而没有任何变化
Option Explicit
Private oldValue As String
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
oldValue = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value <> oldValue Then
MsgBox "Value is Updated"
End If
End Sub