使用Excel VBA:当其他两个列更改时,在列中自动更新日期

问题描述 投票:0回答:3

我希望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

excel vba formula
3个回答
0
投票

解决您的问题的基本代码是:

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


0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.