我有一个电子表格,由5名成员组成的团队进行访问,放在共享文件夹中。随着时间的推移,跟踪电子表格中的更改变得困难。
我想实现以下目标。 Excel有大约8列(仅限表1),行数超过250行。我想在Sheet1中添加另外两列,即所有者(第9列)和最后更新(第10列)。
所有者 - 第9列 - 团队成员名称,无论谁对该行进行更改
日期 - 第10列 - 当前最后一次更新该行时的日期和时间。
请建议我使用VBA代码自动填充第9列和第10列。
答案 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环境变量中获取用户名。