试图在Excel中使用vba显示单元格的新旧值

我试图显示一个单元格的旧和新值在使用VBA的Excel中保存之前和之后我已经尝试了下面的代码,但它显示在第二行的一些types不匹配错误。 我知道有一个愚蠢的错误,但我无法弄清楚

Dim OldVals As New Dictionary Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target If OldVals.Exists(cell.Address) Then Debug.Print "New value of " & cell.Address & " is " & cell.Value & "; old value was " & OldVals(cell.Address) Else Debug.Print "No old value for " + cell.Address End If OldVals(cell.Address) = cell.Value Next End Sub Sub test() Worksheet_Change True End Sub 

我已经重写了一些代码,它工作得很好:

 Option Explicit Dim OldVals As New Dictionary Private Sub Worksheet_Change(ByVal Target As Range) Dim myCell As Range For Each myCell In Target If OldVals.Exists(myCell.Address) Then Debug.Print "New value of " & myCell.Address & " is " & myCell.Value & _ "; old value was " & OldVals(myCell.Address) Else Debug.Print "No old value for " + myCell.Address End If OldVals(myCell.Address) = myCell.Value Next myCell End Sub 

当我input一些值时,这就是我在即时窗口中得到的结果:

 No old value for $B$1 New value of $B$1 is 12; old value was 3 No old value for $E$10 New value of $E$10 is 2; old value was 5 
  • 我已经改变了cellmyCell ,只要它是一个单词,由VBEditor使用。
  • 为了使用OldVals早期绑定,您应该添加一个参考Microsoft Scripting Runtime :附加>库>检查MS脚本运行时>确定

在这里输入图像说明