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
我不是 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