VBA编写的Excel工作表操作留痕小工具

来源:https://www.52pojie.cn/thread-2108915-1-1.html用VBA编写的Excel工作表操作留痕小工具分享给大家,对工作表的单元格任何修改之后,程序会自动以注释的形式标明修改前后的内容,以及修改时间(精确到秒), 如软件截图所示。小工具为带宏的Excel文件(xlsm)格式,小巧轻盈,仅19KB,可以用于个人以及小团队的数据分享,放在共享盘,可以追踪所有单元…

7效率工具52pojie吾爱破解

来源:https://www.52pojie.cn/thread-2108915-1-1.html

用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

下载地址