2015-08-16 136 views
-1

我有“Worksheet_Change”事件完美运行的代码。Excel。工作表更改为工作表计算

单元格“A1”中的值经常会从实时Feed中更改。

我需要帮助,才能使此事件的代码适应“Worksheet_Calculate”事件。

每当单元格值A1发生变化时,自动旧值必须显示在A2中。

A1 New Value 
A2 Old Value 

下面是代码:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim NewValue, OldValue 
    If Target.Address <> "$A$1" Then Exit Sub 
    Application.EnableEvents = False 
    With Target 
     NewValue = .Value 
     Application.Undo 
     OldValue = .Value 
     .Value = NewValue 
    End With 
    Range("a2").Value = OldValue 
     Application.EnableEvents = True 
End Sub 

回答

0

对于一个片代替该代码的表模块中(初始旧值将是空的)

Option Explicit 

Private oldVal As String 

Private Sub Worksheet_Calculate() 
    updateOldValue Me.Range("A1") 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 
    updateOldValue Target 
End Sub 

'------------------------------------------------------------------------------------------ 

Public Sub updateOldValue(ByVal Target As Range) 
    With Target 
     If .CountLarge = 1 Then 
      If .Address = "$A$1" Then 
       .Offset(1, 0) = oldVal 
       oldVal = .Value2 
      End If 
     End If 
    End With 
End Sub 

对于多片,放置一个新的VBA模块中此代码,并把它以同样的方式:

updateOldValue Me.Range("A1")updateOldValue Target


Option Explicit 

Private oldVal As String 

Public Sub updateOldValue(ByVal Target As Range) 
    With Target 
     If .CountLarge = 1 Then 
      If .Address = "$A$1" Then 
       .Offset(1, 0) = oldVal 
       oldVal = .Value2 
      End If 
     End If 
    End With 
End Sub