我正在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”中的当前时间戳,但没有任何显示。我该如何纠正它以获得基于值的时间戳?
答案 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