我希望Excel在A或列D列中进行任何更改时自动插入当前日期。
I发现了一个类似的解决方案,该解决方案使用偏移检查一个列,但它无法按预期进行操作 - 它移动输出而不是将日期保留在F。列中。 VIDEO参考:
EXCEL会自动输入数据时日期和时间戳,但在修改数据时不要更改在视频中,仅在A2:A10触发时间戳的范围内更改。我需要脚本来检查A2:A10和D2:D10,并在任一列中发生更改时仅在F列中放置更新的日期。
如何修改VBA代码以实现这一目标?Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyDataRng As Range
Set MyDataRng = Range("A2:D10")
If Intersect (Target, MyDataRng) Is Nothing Then Exit Sub
On Error Resume Next
Target.Offset(0, 5) = Now
End Sub
它遍历所有列,但最重要的是,它不会在同一列中给当前日期(现在)。
trone类似于此代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyDataRng As Range
Set MyDataRng = Range("A2:A10,D2:D10")
If Intersect(Target, MyDataRng) Is Nothing Then Exit Sub
' On Error Resume Next
Cells(Target.Row, "F").Value = Now
End Sub
解决您的问题的基本代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyDataRng As Range
Dim wks As Worksheet
Set wks = Me
Set MyDataRng = wks.Range("A2:D10")
On Error GoTo ClearError ' Start error-handling routine
If Target.CountLarge = 1 Then
If Not Intersect(Target, MyDataRng) Is Nothing Then
Application.EnableEvents = False
wks.Cells(Target.Row, 5).Value = Now
GoTo ProcExit
End If
End If
ProcExit:
On Error Resume Next
Application.EnableEvents = True
On Error GoTo 0
Exit Sub
ClearError:
MsgBox "Run-time error [" & Err.Number & "]:" & vbLf & vbLf _
& Err.Description, vbCritical
Resume ProcExit
End Sub
Excelvba表,以便对该主题进行更深入的讨论。
让我允许自己提出修改后的 @Michal的代码,该代码能够处理多个单元格更改事件: