检测单元格值已更改VBA

  • 本文关键字:VBA 单元格 excel vba
  • 更新时间 :
  • 英文 :


我需要用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

相关内容

  • 没有找到相关文章

最新更新