繁体   English   中英

当单元格在该列的同一行中更改时,如何在特定列中输入日期/时间戳?

[英]How do I enter the date/time stamp in specific column when a cell is changed in the same row of that column?

我有一个 Excel 表,其中 A:N 列可以用文本填充。

当这些单元格中的任何一个充满文本时,我希望使用日期/时间戳更新单元格 O(同一行)。

我看到的解决方案使用“偏移量”function,但我不能使用它。

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Intersect(Target, Range("A1:O1000")) Is Nothing Then Exit Sub 

    Target.Offset(x,y).Value = Date 

End Sub

将时间戳添加到已更改的单元格行

工作表模块(例如Sheet1

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Const sCols As String = "A:N" ' Source Columns
    Const dCol As String = "O" ' Destination Column
    Const FirstRow As Long = 2
    
    Dim rCount As Long: rCount = Rows.Count - FirstRow + 1
    Dim rOffset As Long: rOffset = FirstRow - 1

    Dim sRng As Range ' Source Range
    Set sRng = Intersect(Columns(sCols).Resize(rCount).Offset(rOffset), Target)
    
    If Not sRng Is Nothing Then
        
        Dim TimeStamp As Date: TimeStamp = Now
        Dim dcRng As Range ' Destination Column Range
        Set dcRng = Columns(dCol).Resize(rCount).Offset(rOffset)
        
        Dim dRng As Range ' Destination Range
        Dim aRng As Range ' Area Range
        
        For Each aRng In sRng.Areas
            If dRng Is Nothing Then
                Set dRng = Intersect(aRng.EntireRow, dcRng)
            Else
                Set dRng = Union(dRng, Intersect(aRng.EntireRow, dcRng))
            End If
        Next aRng
        
        Application.EnableEvents = False
        dRng.Value = TimeStamp
        Application.EnableEvents = True
    
    End If
        
End Sub

Sub testNonContiguous()
    ' No time stamp in cell 'O1' if 'FirstRow > 1'.
    Range("A1,C4,F11").Value = 1
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM