目标:
我希望根据更改事件将日期/时间戳放在要更改的行中最后一列之外的一列中。选中单元格的值,当它不再是目标时,将与相同单元格的值进行比较。
当前代码:
在Sheet1查看代码
中Private Sub Worksheet_Change(ByVal Target As Range)
'MsgBox "Now: " & Now()
Dim i, j As Integer
Dim k As String
Dim LC As Long
i = Target.Row
j = Target.Column
k = Target.Value
LC = Cells(i, Columns.Count).End(xlToLeft).Column
If Not Cells(i, j).Value = k Then
Cells(i, LC + 1).Formula = Format(Now(), "yyyyMMddhhmmss")
End If
End Sub
问题:
尝试运行此代码后,我无法获得任何输出。我使用MsgBox“Now:”& now()进行测试,它确实向我显示更改事件代码位于正确的位置(我评论了这一点,但这是我如何检查应该有什么出现了。
我认为,通过在If语句之外定义i,j和k,我可以保存这些值并比较选择中的值与未选择时的值进行比较。
问题:
我设置此代码的方式是否不恰当,如果是这样,我该如何更正更合适?这是我第一次参加变革活动。
Edit1:考虑@ScottCraner的评论
,为目标添加更多细节答案 0 :(得分:3)
根据您的意见,您想要:
Private Sub Worksheet_Change(ByVal Target As Range)
'MsgBox "Now: " & Now()
Dim i As Long
Dim LC As Long
i = Target.Row
LC = Cells(i, Columns.Count).End(xlToLeft).Column
Application.EnableEvents = False
Cells(i, LC + 1).Formula = Format(Now(), "yyyyMMddhhmmss")
Application.EnableEvents = True
End Sub
答案 1 :(得分:2)
这是你在找什么?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LC As Long
Application.EnableEvents = False
LC = Cells(Target.Row, Columns.Count).End(xlToLeft).Column
Cells(Target.Row, LC + 1).Formula = Format(Now(), "yyyyMMddhhmmss")
Application.EnableEvents = True
End Sub