我想要做的是,当某一列中的任意位置的数据发生更改时,在该列上标记上次更改数据的时间以及更改者的用户名。(如果这个问题已经在任何地方得到解答,请见谅。我快速搜索了一下,但没找到。而且我对宏和 VBA 还不太熟悉,否则我可能自己就能搞清楚。)
我希望时间戳(可以只是日期)出现在第 9 行,用户名出现在第 10 行。
我找到了几个宏,它们可以记录列中的变化,并尝试修改公式,使其适用于一行,但每次都会在日期之前写下日期。这是我尝试的代码(在模拟表上,而不是实际的表上——我认为如果我能找出它的工作原理,我可以稍后更改地址):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 4 Or Target.Row = 5 Then
Cells(Target.Cell, 3, 2).Value = Now
Cells(Target.Cell, 2, 2).Value = Environ("Username")
End If
End Sub
答案1
此 VBA 代码应该可以满足您的需要
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row >= 1 And Target.Row <= 8 And Target.Column >= 4 Then
Cells(9, Target.Column) = Now()
Cells(10, Target.Column) = Application.UserName
End If
End Sub
您需要将此代码添加到工作表本身。单击DEVELOPER
功能区中的 ,然后单击Visual Basic
。这将打开 VBA 编辑器。
选择左侧的工作表,然后粘贴上述代码并保存为启用宏的工作簿。
对 C 列后第 1 行至第 8 行的任何编辑都应向第 9 行和第 10 行添加日期时间戳和当前用户名。