我在尝试整理VBA代码时会遇到一些问题,每次编辑行中的某些内容时都会更新时间戳。
所以我需要的是A3中的时间戳,用于编辑B3:CA3中的某些内容,以及每行最多1000行的内容。
我做了一些环顾四周,但到目前为止我发现的所有代码只与特定列有关,而不是行范围......
任何帮助都感激不尽。
试试这个工作表事件宏:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, Intersection As Range, cell As Range
Set r = Range("B3:CA1003")
Set Intersection = Intersect(r, Target)
If Intersection Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each cell In Intersection
Range("A" & cell.Row).Value = Date & " " & Time
Next cell
Application.EnableEvents = True
End Sub
因为它是工作表代码,所以很容易安装和自动使用:
如果您有任何疑虑,请先在试用工作表上试用。
如果保存工作簿,宏将与其一起保存。如果您在2003年之后使用的是Excel版本,则必须将文件另存为.xlsm而不是.xlsx
要删除宏:
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能使其正常工作!
编辑#1:
要获取NT用户名和应用程序用户名,请尝试:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, Intersection As Range, cell As Range
Dim s As String
Set r = Range("B3:CA1003")
Set Intersection = Intersect(r, Target)
s = vbCrLf & Environ("USERNAME") & vbCrLf & Application.UserName
If Intersection Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each cell In Intersection
Range("A" & cell.Row).Value = Date & " " & Time & s
Next cell
Application.EnableEvents = True
End Sub