做一個(gè)表,經(jīng)常修改,時(shí)間長(zhǎng)了,誰還能記得修改了什么,什么時(shí)候修改的呢?如果一不小心刪除了,要如何恢復(fù)數(shù)據(jù)呢?
這一切的問題,是你我這樣的辦公族每天都會(huì)遇到的煩惱!是時(shí)候展現(xiàn)真正的技術(shù)了!
以上問題,在學(xué)習(xí)完我們今天的技巧后,都不是事什么時(shí)候?改了什么?原內(nèi)容是什么?修改是什么?所有記錄?
▍記錄內(nèi)容:
1、修改時(shí)間:可以精確到秒
2、事件:新增還是修改
3、單元格:操作的單元格地址
4、原內(nèi)容:新增內(nèi)容,原內(nèi)容為空
5、新內(nèi)容:修改后的內(nèi)容
▍制作教程
本案例,我們使用事件來記錄單元格的變化,不懂VBA也沒有關(guān)系,直接套用記錄!
1、右擊任意工作表名稱,查看代碼,打開VBE
2、雙擊需要記錄修改記錄的工作表
3、復(fù)制代碼,粘貼進(jìn)去,點(diǎn)擊右上角的×,關(guān)閉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?'控制修改內(nèi)容檢查的范圍這里是A-E列
????newvalue?=?Target.Value
????'內(nèi)容發(fā)生變化,記錄
????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("修改記錄")
????????????'修改的日期時(shí)間
????????????.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?'控制修改內(nèi)容檢查的范圍這里是A-E列
????oldValue?=?Target.Value
????Debug.Print?"原始內(nèi)容:"?&?oldValue
End?Sub