做一个表,经常修改,时间长了,谁还能记得修改了什么,什么时候修改的呢?如果一不小心删除了,要如何恢复数据呢?
这一切的问题,是你我这样的办公族每天都会遇到的烦恼!是时候展现真正的技术了!
以上问题,在学习完我们今天的技巧后,都不是事什么时候?改了什么?原内容是什么?修改是什么?所有记录?
▍记录内容:
1、修改时间:可以精确到秒
2、事件:新增还是修改
3、单元格:操作的单元格地址
4、原内容:新增内容,原内容为空
5、新内容:修改后的内容
▍制作教程
本案例,我们使用事件来记录单元格的变化,不懂VBA也没有关系,直接套用记录!
1、右击任意工作表名称,查看代码,打开VBE
2、双击需要记录修改记录的工作表
3、复制代码,粘贴进去,点击右上角的×,关闭VBE
▍代码如下
Public oldValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer, changeTp As String
If Target.Cells.Count <> 1 Then End
If Target.Column > 5 Then End '控制修改内容检查的范围这里是A-E列
newvalue = Target.Value
'内容发生变化,记录
If oldValue <> newvalue Then
iRow = Worksheets("修改记录").Cells(Rows.Count, 1).End(3).Row + 1
If oldValue = "" Then
changeTp = "新增"
Else
If newvalue <> "" Then
changeTp = "修改"
End If
End If
With Worksheets("修改记录")
'修改的日期时间
.Cells(iRow, 1) = "'" & Format(Now, "yyyy-mm-dd hh:mm:ss")
.Cells(iRow, 2) = changeTp
.Cells(iRow, 3) = Target.Address(0, 0)
.Cells(iRow, 4) = oldValue
.Cells(iRow, 5) = newvalue
End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count <> 1 Then End
If Target.Column > 5 Then End '控制修改内容检查的范围这里是A-E列
oldValue = Target.Value
Debug.Print "原始内容:" & oldValue
End Sub