我正在创建一个包含另一个工作表的logdetails
的电子表格,其中的信息不断变化,我必须跟踪这些变化。我能够将部分变化记录到logdetails
电子表格中
而不是列名(基于单元地址和旧值)。
这里是我的VBA代码到目前为止。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name <> "logdetails" Then
Application.EnableEvents = False
Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = ActiveSheet.Name & "-" & Target.Address(0, 0)
Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 3).Value = Target.Value
Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 4).Value = Environ("username")
Sheets("logdetails").Range("A" & Rows.Count).End(xlUp).Offset(0, 5).Value = Now
Sheets("logdetails").Columns("A:H").AutoFit
Application.EnableEvents = True
End If
End Sub
2条答案
按热度按时间lrl1mhuk1#
首先你需要通过工作簿事件把旧值保存在某个地方。下面的变量lastRng会保存每个活动单元格的值,如果有变化会恢复
之后,添加下面两行
我不是很明白你所说的列名是什么意思,但是如果你想要用字母来代替列号或单元格地址,你可以在question中找到很好的解决方案来将一个转换成另一个
总而言之,您的合并代码将如下所示:
zf9nrax12#
工作簿工作表变更:记录多个工作表中的更改