【发布时间】:2016-07-13 00:42:53
【问题描述】:
这是我的问题:当用户在一行中的任何位置进行更改时,我有工作代码可以插入用户名和时间戳。伟大的!所以我的代码有效,我回答了我自己的问题,对吧?没有!有一个小问题,虽然它不会破坏代码,但确实会导致用户输入的用户名在未进行更改时进行了更改。
这是我的代码:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
ThisRow = Target.Row
'protect Header row from any changes
If (ThisRow = 1) Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Header Row is Protected."
Exit Sub
End If
For i = 1 To 61
If Target.Column = i Then
' time stamp corresponding to cell's last update
Range("BK" & ThisRow).Value = Now
' Windows level UserName | Application level UserName
Range("BJ" & ThisRow).Value = Environ("username")
Range("BJ:BK").EntireColumn.AutoFit
End If
Next i
End Sub
它是这样发生的:用户决定要对单元格进行更改,因此他们双击该单元格。现在,如果他们按下 Escape 键,什么都不会发生,一切都是笨拙的。但是,如果他们双击该单元格,然后在该单元格外部单击另一个单元格以离开该单元格,即使没有进行任何更改并且用户的用户名已输入,系统也会将其记录为更改第 62 列。这不是 bueno,因为如果某人被错误地列为最后一个更改该行中某些内容的人,则某人可能要对另一个人所犯的错误负责。
相反 - 在用户更改的单元格中创建评论可能是值得的,但我认为双击单元格时我会遇到同样的问题,所以我仍然需要考虑它.
想法?
编辑:完全公开,我在别处找到了这段代码,并根据我的目的对其进行了修改。
【问题讨论】: