【发布时间】:2018-05-01 10:55:52
【问题描述】:
我有一个创建日志的宏,每次特定工作表中的单元格发生更改时,都会在日志表中。
那个宏真的很好用,但不幸的是有点太好了!!因为每次我删除一行或一列时,它都会记录该行或列中已删除的每个单元格! (那是很多单元格!所以电子表格就倒塌了)
有没有办法让我的宏只记录已删除的行(而不是该行中的每个单元格?如果没有...如果行或列被删除,我可以让它忽略创建日志文件吗?删除了吗?
或者我可以将代码限制在特定范围内吗?例如。如果我删除一行,它只会记录单元格 A13:BC13 已被删除
我目前使用的代码如下:
Const intUsernameColumn = 1
Const intCellRefColumn = 2
Const intNewValueColumn = 3
Const intTimestampColumn = 4
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shtLog As Worksheet
Dim cll As Variant
Dim lngNextRow As Long
Set shtLog = ThisWorkbook.Sheets("Log")
For Each cll In Target.Cells
lngNextRow = shtLog.Cells.Find(What:="*", After:=[A1], Searchorder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1
shtLog.Cells(lngNextRow, intUsernameColumn).Value = Environ("username")
shtLog.Cells(lngNextRow, intCellRefColumn).Value = cll.Address
shtLog.Cells(lngNextRow, intNewValueColumn).Value = cll.Value
shtLog.Cells(lngNextRow, intTimestampColumn).Value = Format(Now, "dd-mmm-yy hh:mm:ss")
Next cll
End Sub
我在这方面还很新,所以任何帮助都将不胜感激
谢谢!!
【问题讨论】:
-
我本来建议检查
Target.Address = Target.EntireColumn.Address,但那不知道您是否删除或添加了列。