显示单元格更改时的时间戳

显示单元格更改时的时间戳

我需要知道当 B 列中同一行中的单元格发生变化时,如何在 D 列中的单元格中显示时间戳。我在 Paint 中编辑了此屏幕截图,以更轻松地显示我的意思: 图片

我有一个 vba 脚本,它检查不同的工作表中是否存在输入到 B 列的值。这在选择 Worksheet_SelectionChange 事件时发生,因此我不能简单地添加:

Range("D3").Value = Now()

或者类似的东西,因为它每次我选择某个东西时都会更新,我只需要在 B 列中的单元格发生变化时更新它。顺便说一下,B 列中的值只包含数字 0、1 或 2

答案1

此 VBA 代码将执行此操作:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wk As Workbook
Set wk = ThisWorkbook
Dim ws As Worksheet
Set ws = ActiveSheet
WatchedColumn = 2
BlockedRow = 1
TimestampColumn = 4
Crow = Target.Row
CColumn = Target.Column
If CColumn = WatchedColumn And Crow > BlockedRow Then
    Cells(Crow, TimestampColumn) = Now()
End If

End Sub

您必须复制代码,转到 Excel 中的视图->宏,创建一个新的宏(任何名称均有效),然后在左栏中双击要使用它的工作表(图片中的红旗),然后在右侧粘贴代码。

双击工作表

每当 B 列上的同一行发生变化时,此宏就会修改 D 列上单元格的内容。变量 BlockedRow 保护第一行,因为它通常有标签,如果您有多行标签,则将变量更改为 2 或更多。

如果需要更改列,请对变量WatchedColumn和进行更改TimestampColumn。(A=1、B=2、C=3、D=4、... 等等)。

答案2

我知道已经有答案了,但是这个 VBA 更简洁一些 -

Private Sub worksheet_change(ByVal target As Range)
 If Not Intersect(target, Range("B:B")) Is Nothing Then
  target.Offset(0, 2) = Now()
 End If
End Sub

要调整问题中没有的其他要求,只需添加 if -

Private Sub worksheet_change(ByVal target As Range)
    If Not Intersect(target, Range("B:B")) Is Nothing Then
        If target.Row > 1 Then
           target.Offset(0, 2) = Now()
        End If
    End If
End Sub

答案3

我想在扫描条形码后在 excel 中的一列中添加日期。扫描条形码后,excel 搜索文档,然后突出显示该行信息。我想在突出显示的行中添加日期。目前我有一个代码,用于双击添加日期,但我想在突出显示行后添加日期。

下面是我的条形码扫描后搜索我的号码的代码,一旦找到它就会突出显示该行信息。

Private Sub worksheet_change(ByVal target As Range)
If Not Intersect(target, Columns("M")) Is Nothing Then
    Z = Intersect(target, Columns("M")).Value
    If IsNumeric(Z) Then
        x = Application.Evaluate("MATCH(" & Z & ",B:B,0)")
    Else
        x = Application.Evaluate("MATCH(" & Chr(34) & Z & Chr(34) & ",B:B,0)")
    End If
    If Not IsError(x) Then
        Application.Goto Cells(x, 15)
    End If
    
End If

下面是我可以双击我的框来添加日期的地方。我想在行以颜色突出显示后自动添加日期。

End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
    If Not Intersect(target, Range("K4:K1500")) Is Nothing Then
        Cancel = True
        target.Formula = Date
    End If
End Sub

谢谢

相关内容