记录单元格中存放过的数据
如果我们能够记录单元格中曾经放置过的数据,就可以清楚地看到该单元格的编辑痕迹。如图1所示,在工作表Sheet1的单元格批注中,显示出该单元格中所有存放过的数据,包括当前正存放的数据。
图1
在工作表Sheet1的代码模块中,输入的代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim str AsString
'存储输入的数据
str =Sheet2.Range(Target.Address) & Target & " , "
Sheet2.Range(Target.Address) = str
'清除多于一个单元格导致的错误
On ErrorResume Next
'不能覆盖已存在的批注
Target.ClearComments
'添加单元格批注
WithTarget
'当值改变量获取前一个值
.AddComment
.Comment.Visible = False
.Comment.Text Text:="本单元格中依次输入的值是: " _
& Left(Sheet2.Range(Target.Address), _
Len(Sheet2.Range(Target.Address)) - 3)
End With
End Sub
使用下面的代码,可以只显示该单元格中上次存放的数据。
Private Sub Worksheet_SelectionChange(ByVal TargetAs Range)
'将前一个值复制到另一个工作表相对应的单元格中
Sheet2.Range(Target.Address) = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'清除多于一个单元格导致的错误
On ErrorResume Next
'不能覆盖已存在的批注
Target.ClearComments
WithTarget
'当值改变量获取前一个值
.AddComment
.Comment.Visible = False
.Comment.Text Text:="单元格中上次输入的值是: " & _
Sheet2.Range(Target.Address)
End With
End Sub
代码运行后的结果如图2所示。
图2
注意,代码要放置在工作表代码模块中,本例是放置在工作表Sheet1代码模块中。Worksheet_SelectionChange事件发生在由当前单元格转移到的下一个单元格中,例如当前单元格为A1,下一个单元格为A2,那么该事件发生在单元格A2中。