Excel 如何仅在输入特定值时创建时间戳
我正在尝试编写一个sub,当在第I列中输入文本“YES”时,它会在第J列中创建一个时间戳 现在我有一个正在工作的sub,当I列中的一个单元格被更改时,它会在J列中创建一个时间戳。但我试图更改此潜艇以符合上述标准,但迄今为止失败。你能给我指点方向吗Excel 如何仅在输入特定值时创建时间戳,excel,vba,Excel,Vba,我正在尝试编写一个sub,当在第I列中输入文本“YES”时,它会在第J列中创建一个时间戳 现在我有一个正在工作的sub,当I列中的一个单元格被更改时,它会在J列中创建一个时间戳。但我试图更改此潜艇以符合上述标准,但迄今为止失败。你能给我指点方向吗 Private Sub Worksheet_Change(ByVal Target As Range) Dim speakRange As Range Dim timeSpeakRange As Range Set speakRange = Ran
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
与其提前退出,不如否定你的陈述。从那里,运行
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
但如果
Target
是多单元格范围,则此操作将失败。如果Target.Cells(1.Value:-)问题已解决,则很容易更改为!或者这可能是OP的一个教学时刻。@SJR-如果你选择了一堆单元格,输入一些内容,并用Ctrl+Shift+enter进行确认。我明白你的意思@BigBen-我在接受post literal时,在OPs尝试中专注于纠正其他内容。预测其他错误是前进的方向,但已经有其他问题要开始。想知道溢出范围如何影响这一点。与前面的数组公式相同,Prob是真正安全的-Target。单元格(1)
可能不一定对应于列I中的单元格-例如,如果Target
是H10:J10
。。。为了安全起见,您确实希望在目标
和列I的交叉点上工作。提示:由于您正在处理工作表更改事件,您可能还希望看到