如果行已更改,我需要添加或更新时间戳,以优化工作簿。我正在进行数据导入,但我需要查看哪一行已更新/添加以及哪个日期。
到目前为止,我已找到并调整了以下代码:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range("A2:BL9999"), .Cells) Is Nothing Then
Application.EnableEvents = False
With .Cells(1, 65)
.NumberFormat = "yyyy.mm.dd"
.Value = Now
End With
Application.EnableEvents = True
End If
End With
End Sub
问题是,时间戳总是相对于已进行更改的行添加+65行,而不是列BM(索引65)。
您能告诉我,我应该使用或更改哪个功能?
答案 0 :(得分:2)
除了BM
列的修复程序更好
ScreenUpdating
以获得速度码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Intersect(Target, Range("A2:BL9999"))
If rng1 Is Nothing Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
For Each rng2 In rng1.Cells
With Cells(rng2.Row, 65)
.NumberFormat = "yyyy.mm.dd"
.Value = Now
End With
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
答案 1 :(得分:0)
要更改相对于整行的参考,请使用.EntireRow
。
因此该行应为:With .EntireRow.Cells(1, 65)
请注意,即使使用单行,您仍然可以使用A1样式引用。这可以使您不必计算列数。例如,在这种情况下,.EntireRow.Range("BM1")
表示与.EntireRow.Cells(1, 65)
完全相同的内容。