我遇到一些问题,试图将VBA代码放在一起,每次编辑行中的某些内容时都会更新时间戳。
所以我需要的是A3中的时间戳记,用于编辑B3:CA3中的内容,以此类推,直到1000行为止。
我已经环顾四周,但是到目前为止,我发现的所有代码仅与特定列有关,而与行范围无关...
任何帮助将不胜感激。
答案 0 :(得分:1)
尝试使用此工作表事件宏:
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
必须启用宏才能使其正常工作!
EDIT#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