首页 > 解决方案 > 如何仅在输入特定值时创建时间戳

问题描述

我正在尝试编写一个子程序,当在 I 列中输入文本“YES”时,它会在 J 列中创建一个时间戳。

现在我有一个工作子,当 I 列中的单元格发生更改时,它会在 J 列中创建一个时间戳。但到目前为止,我试图改变这个子以符合上述标准的尝试都失败了。你能给我建议或指出正确的方向吗?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim speakRange As Range
Dim timeSpeakRange As Range

Set speakRange = Range("I3:I1000")

If Intersect(Target, speakRange) Is Nothing Then Exit Sub

'Stop
Application.EnableEvents = False

'column for timestamp
Set timeSpeakRange = Range("J" & Target.Row)


'Determine if the input date/time should change

If timeSpeakRange .Value = "" Then

    timeSpeakRange .Value = Date

End If


'Turn events back on
Application.EnableEvents = True


End Sub

标签: excelvba

解决方案


否定你的陈述,而不是提前退出。从那里,运行简单的检查,Target = "YES"如果是,访问右侧的单元格以Offset(0, 1)添加日期。


您可能需要格式化日期并查看下面的@BigBen 评论以进行理想的错误处理

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("I:I")) Is Nothing Then
    If Target = "YES" Then
        Application.EnableEvents = False

            Target.Offset(, 1) = Date

        Application.EnableEvents = True
    End If
End If

End Sub

推荐阅读