使用工作表中多个单元格的日期更新更改后的单元格

使用工作表中多个单元格的日期更新更改后的单元格

我有一张工作表,每个月有一列。每个单元格都通过其他工作表更新,但我希望在单元格中自动添加一个日期,以表明何时更新。我尝试使用代码来实现这一点,但它会将整个列的日期更改为相同。我错过了什么?我怎样才能让它只更改当天更改的单元格的日期。例如,在十天的时间内,数十名用户更新了该列中的单元格。我不希望日期相同。

这是我所用的?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim targetRng As Range
Dim rng As Range
Dim c As Integer

Set targetRng = Intersect(Application.ActiveSheet.Range("H:H"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("J:J"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("L:L"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("N:N"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("P:P"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("R:R"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("T:T"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("V:V"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("X:X"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("Z:Z"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("AB:AB"), Target)
Set targetRng = Intersect(Application.ActiveSheet.Range("AD:AD"), Target)

c = 1

If Not targetRng Is Nothing Then
    Application.EnableEvents = False
      For Each rng In targetRng
        If Not VBA.IsEmpty(rng.Value) Then
          rng.Offset(0, c).Value = Now
          rng.Offset(0, c).NumberFormat = "m/dd/yyyy"
        Else
       rng.Offset(0, c).ClearContents
       End If

    Next
    Application.EnableEvents = True

    End If

    End Sub

答案1

您遇到此问题是因为您已完全占用 H 列到 AD 列来从其他工作表获取数据,但未指定将插入当前日期和时间的位置。

假设传入的数据占据 H1:AD1,则应在相邻的 AE1 列中输入当前日期,为此偏移列脚本需要包含在变量C,您已经使用过。

下面是一个示例代码,将帮助您了解如何使用 xOffsetColumn。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer

Set WorkRng = Intersect(Application.ActiveSheet.Range("H:H"), Target)
xOffsetColumn = 1

If Not WorkRng Is Nothing Then
    Application.EnableEvents = False

    For Each Rng In WorkRng

        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/yyyy hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next

    Application.EnableEvents = True
End If

End Sub

注意:我只使用了 H 列,您需要包含所有必需的列。

我确实希望这对你有帮助。

相关内容