Excel VBA - 记录单元格发生变化的时间

Excel VBA - Record when change in a cell occurred

我不是 VBA 方面的专家,我的所有代码都是 'found' 在互联网上为我的目的修改和使用的,所以这就是我在这里苦苦挣扎的原因。

我有一个非常具体(但简单)的工具,当扫描到错误的条形码(B 列)时,我需要记录实际时间(在 V 列)。

此工具将扫描的条形码与预期数据进行比较 - 当发生错误时, 它说明了那是什么类型的错误 - 这是通过查询(加载预期数据)和公式(比较扫描与预期)完成的。

重点:

在名为“扫描”的sheet中,用户正在扫描 B 列中的条形码。 C 列给出“OK”或错误信息。 如果 B 单元格为空,则 U 列保持为空,“正常”时为数字 0,错误时为数字 1。

我的目标:

当 U 列中的数字 1 出现时 - 我需要将发生在同一行中的实际时间写入 V 列中。

我试过很多代码都没有成功。 我的最后一个(非工作)是:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, ThisWorkbook.Worksheet("Scan").Range("U3:U1050")) Is Nothing Then
    Target.Range(.Row, 22) = Now()
End If

End Sub

我想您只需要 U 列显示 1 时的日期。在所有其他情况下,V 列应该为空。并且除了 U 列中的更改外,任何更改都应被忽略。
但是由于 U 列包含引用 B 列的公式,因此如果 B 列发生变化,您应该激活该过程。尝试:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 Then
    With Target.EntireRow
      If .Cells(21).Value = 1 Then
        .Cells(22).Value = Now()
      Else
        .Cells(22).Value = Empty
      End If
    End With
  End If
End Sub