如何在Excel中自动填充作者姓名和日期

时间:2013-06-25 10:03:23

标签: excel vba

我有一个电子表格,由5名成员组成的团队进行访问,放在共享文件夹中。随着时间的推移,跟踪电子表格中的更改变得困难。

我想实现以下目标。 Excel有大约8列(仅限表1),行数超过250行。我想在Sheet1中添加另外两列,即所有者(第9列)和最后更新(第10列)。

所有者 - 第9列 - 团队成员名称,无论谁对该行进行更改

日期 - 第10列 - 当前最后一次更新该行时的日期和时间。

请建议我使用VBA代码自动填充第9列和第10列。

1 个答案:

答案 0 :(得分:1)

编辑 - 将row = ActiveCell.row更改为row = Target.row(如果您不在同一行,则允许)

这样的事情应该有效。显然,您可能需要考虑添加一些错误处理,如果您只想在某些字段更改等情况下进行更新,可能需要进一步验证。但这肯定涵盖了基础知识:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' declare constants and variables
    Const owner_col As String = "I"
    Const date_col As String = "J"
    Dim row As Double
    Dim owner_addr As Range
    Dim date_addr As Range

    ' initialise
    row = Target.row
    Set owner_addr = Range(owner_col & row)
    Set date_addr = Range(date_col & row)

    ' check that the update is not to the fields you want to update to avoid infinite loop
    If Target.Address <> owner_addr.Address And Target.Address <> date_addr.Address Then
        ' set values
        owner_addr.Value = Environ("username")
        date_addr.Value = Now()
    End If

   ' free up the memory
   Set owner_addr = Nothing
   Set date_addr = Nothing

End Sub

这需要添加到您希望跟踪更改的工作表中(即不是模块或整个工作簿)。如果您有任何问题,请告诉我。

Environ(“用户名”)从Windows环境变量中获取用户名。