当列中的数据发生变化时,预定义行中的 Excel VBA 时间戳

当列中的数据发生变化时,预定义行中的 Excel VBA 时间戳

我想要做的是,当某一列中的任意位置的数据发生更改时,在该列上标记上次更改数据的时间以及更改者的用户名。(如果这个问题已经在任何地方得到解答,请见谅。我快速搜索了一下,但没找到。而且我对宏和 VBA 还不太熟悉,否则我可能自己就能搞清楚。)

该图显示了当前格式的 Excel 电子表格的设置

我希望时间戳(可以只是日期)出现在第 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 行添加日期时间戳和当前用户名。

相关内容