在更改之前检测单元格中的值

时间:2015-03-03 20:36:13

标签: excel-vba worksheet-function vba excel

有没有办法在更改之前检测单元格包含的内容。我试图根据单元格中的先前值执行操作。我知道那里的Worksheet_Change,但它使用的目标是新值。

2 个答案:

答案 0 :(得分:1)

您可以撤消更改,将撤消的值填充到变量,然后重做更改,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OldValue As Variant, NewValue As Variant
NewValue = Target.Value
Application.EnableEvents = False
Application.Undo
OldValue = Target.Value
Target.Value = NewValue
Application.EnableEvents = True
MsgBox OldValue
End Sub

答案 1 :(得分:0)

我们必须记住那里有什么。说单元格 B9 是有意义的。在标准模块中包含单行:

Public OldValue As Variant

并在工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("B9")) Is Nothing Then Exit Sub
    v = Target.Value
    MsgBox v & vbCrLf & OldValue
    OldValue = v
End Sub