在特定的单元格中输入特定的值时,如何返回时间戳

时间:2019-02-17 18:05:53

标签: excel vba timestamp

我正在Excel中创建一个报表样式的工作表,如果单元格“ I6”的值为“ Completed”,试图获取一个时间戳以自动在单元格“ P4”中输入

我曾尝试使用= IF公式,该公式很有效,但是我无法在此工作表将要使用的计算机上切换迭代计算。

我对编写自己的VBA相当陌生,并且在使当前代码正常工作时遇到了一些麻烦。以下是我目前拥有的东西,没有给我任何结果。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As String
    Set r = Cells("I6")
    If r.Value Is Nothing Then Exit Sub
    If r.Value <> "Completed" Then Exit Sub
    If r.Offset(-2, 7).Value <> "" Then Exit Sub
    Application.EnableEvents = False
        r.Offset(-2, 7) = Now()
    Application.EnableEvents = True
    End If
End Sub

我希望一旦将值“ Completed”输入到单元格“ I6”中,代码​​将为我提供单元格“ P4”中的当前时间戳,但没有任何显示。我该如何纠正它以获得基于值的时间戳?

1 个答案:

答案 0 :(得分:0)

由于在每个单元格更改时都会调用此子项(并且您以后也可以将其用于其他单元格检查),因此,如果您的单元格受到影响,请先由Intersect进行检查。

更改后的范围以Target给出(可以是单个单元格,也可以是完整范围,例如,粘贴到其上)。如果那与监视的单元格I6相交,则可以...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RelevantArea As Range

    Set RelevantArea = Intersect(Target, Me.Range("I6"))
    If Not RelevantArea Is Nothing Then
        If Target.Value = "Completed" Then
            Application.EnableEvents = False
            Me.Range("P4").Value = Now()
            Application.EnableEvents = True
        End If
    End If
End Sub