我有一个由 5 名成员组成的团队访问的电子表格,放在一个共享文件夹中。随着时间的推移,跟踪电子表格上的更改变得越来越困难。
我想实现以下目标。Excel 有大约 8 列(仅工作表 1),行数超过 250 行。我想向 Sheet1 添加另外 2 列,例如所有者(第 9 列)和上次更新(第 10 列)。
所有者 - 第 9 列 - 团队成员姓名,更改该行的人
日期 - Column10 - 当前日期和时间,每当对该行进行最后一次更新时。
请建议我使用 VBA 代码自动填充第 9 列和第 10 列。
编辑- 将 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("username") 从 Windows 环境变量中获取用户名。