用VBA编写的Excel工作表操作留痕小工具分享给大家,对工作表的单元格任何修改之后,程序会自动以注释的形式标明修改前后的内容,以及修改时间(精确到秒), 如软件截图所示。小工具为带宏的Excel文件(xlsm)格式,小巧轻盈,仅19KB,可以用于个人以及小团队的数据分享,放在共享盘,可以追踪所有单元格的更改记录,希望对大家有帮助~~
通过百度网盘分享的文件:Excel工作表操作留痕
链接: https://pan.baidu.com/s/1pF4BxskDZBWrcCRyFBmEHA?pwd=52pj 提取码: 52pj
同时把源代码分享如下,请吾爱的大神们多多指点:
[Visual Basic] 纯文本查看 复制代码 Option Explicit
' 模块级变量:保存修改前的值
Private oldValue As String
' 选中单元格时记录旧值
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge > 1 Then Exit Sub
On Error Resume Next
oldValue = CStr(Target.Value)
If Err.Number <> 0 Then oldValue = "无法读取"
On Error GoTo 0
End Sub
' 单元格内容变化时写入批注
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.CountLarge > 1 Then Exit Sub
Dim newValue As String
newValue = CStr(Target.Value)
' 如果内容没变,直接退出
If newValue = oldValue Then Exit Sub
Application.EnableEvents = False
Dim cmt As Comment
Set cmt = Target.Comment
' 没有批注就新建
If cmt Is Nothing Then
Set cmt = Target.AddComment
End If
' 构造批注内容
Dim logText As String
logText = _
IIf(cmt.Text <> "", cmt.Text & vbCrLf, "") & _
Format(Now, "yyyy-mm-dd hh:mm:ss") & " " & _
"原内容:" & oldValue & ";" & _
"修改为:" & newValue
' 写入批注
cmt.Text Text:=logText
' 自动调整批注大小
cmt.Shape.TextFrame.AutoSize = True
Application.EnableEvents = True
End Sub |