专栏首页完美Excel问与答70: 如何记录指定单元格每次修改的时间?

问与答70: 如何记录指定单元格每次修改的时间?

Q:我想要在用户修改工作表指定单元格的内容时,在另一工作表中记录修改的时间。例如,在工作表Sheet1的单元格B2中,每次用户将该单元格值修改为某一大于0的数值时,则在工作表LogB2中记录下其修改的时间。

具体地说,如果在2019年10月24日19时30分30秒,用户将单元格B2中的值修改为280,那么在工作表LogB2中记录下时间2019-10-24 19:30:30;如果在2019年10月25日8时10分15秒又将单元格B2中的值修改为100,那么工作表LogB2中增加一条时间记录2019-10-25 8:10:15。

A:这可以使用工作表事件来完成。

打开VBE,双击工作表Sheet1对象模块,输入代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngInput As Range
    Dim rngLog As Range
 
    '要记录其修改时间的单元格
    Set rngInput = Range("B2")
   
    '确定单元格是目标单元格
    If Intersect(rngInput, Target.Cells(1, 1)) Is Nothing Then Exit Sub
 
    '修改为小于0的值不记录
    If rngInput.Value <= 0 Then Exit Sub
 
    '将修改单元格时的时间记录到工作表LogB2
    With Worksheets("LogB2")
        '工作表最后一行
        Set rngLog = .Cells(.Rows.Count,1).End(xlUp)
       
        '确定工作表最后一行单元格含有值
        If Len(rngLog.Value) > 0 Then
            '移至下方相邻的空单元格
            Set rngLog = rngLog.Offset(1, 0)
        End If
    End With
   
    '写入当前时间
    rngLog.Value = Now
End Sub

Q:我想增加记录另一个单元格的修改时间,例如单元格D2每次修改的值大于0时,将修改的时间记录到工作表LogD2中,如何编写代码?

A:同样使用工作表事件来完成。

打开VBE,双击工作表Sheet1对象模块,输入代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngLog As Range
    Dim wksLog As Worksheet
   
    '根据所修改的单元格
    '赋值相应的工作表
    Select Case Target.Cells(1, 1).Address
        Case "$B$2"
            Set wksLog =Worksheets("LogB2")
        Case "$D$2"
            Set wksLog =Worksheets("LogD2")
        Case Else
            Exit Sub
    End Select
 
    '如果修改的值小于0则不记录修改时间
    If Target.Cells(1, 1).Value <= 0 ThenExit Sub
 
    With wksLog
        '工作表数据所在的最后一行
        Set rngLog = .Cells(.Rows.Count, 1).End(xlUp)
       
        '如果最后一个数据单元格包含值
        If Len(rngLog.Value) > 0 Then
            '偏移到下方相邻单元格
            Set rngLog = rngLog.Offset(1, 0)
        End If
    End With
   
    '写入当前时间
    rngLog.Value = Now
End Sub

本文分享自微信公众号 - 完美Excel(excelperfect),作者:fanjy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Excel实战技巧81: 巧妙显示工作表数据信息

    我们可以将工作表中的一些信息隐藏,供需要时或者有些用户想看时选择查看,如下图1所示。

    fanjy
  • Excel公式练习38: 求一列中的数字剔除掉另一列中的数字后剩下的数字

    导语:继续研究来自于excelxor.com的案例。这个案例看似简单,然而实现起来却比较难,这里面用到的技巧值得学习。

    fanjy
  • Excel公式练习41: 获取非连续单元格区域中只出现一次的数字

    导语:继续研究来自于excelxor.com的案例。这个案例不用数组公式就能解决,但仍有很多值得学习的技术。

    fanjy
  • 快速学习JasperReport-Chart图表

    (3)创建chart图标 第一步:palette面板找到chart图表,拖拽到band中 第二步:选择需要的图表类型

    cwl_java
  • 2019年最全的web前端知识体系汇总

    · HTML: https://developer.mozilla.org/zh-CN/docs/Web/HTML

    用户5827212
  • INDEX函数怎么用?两种方法全在这儿

    1、选中Excel中的单元格E2。在“公式”界面中点击“函数库”中的“查找与引用”。然后点击列表中的“INDEX”函数。

    高效办公
  • 基础能力框架演进

    用户6969969
  • Linux登录shell和非登录(交互式shell)环境变量配置

    使用Jenkins执行shell脚本的时候, 碰到command not found. 比如java mvn, 这些环境变量配置在/etc/profile 中...

    Ryan-Miao
  • 无人机常用的6大可靠性测试

    导读: 由于无人器作业的环境条件往往多变且复杂,而且每一款机器对于内部功耗发热的控制能力有所区别,最终导致飞行器自身的硬件对于温度的适应能有所不同,所以为了满足...

    机器人网
  • Objective-C Runtime:深入理解类与对象

    常说Objective-C是一门动态语言,那么问题来了,这个动态表现在那些方面呢?

    Jacklin999

扫码关注云+社区

领取腾讯云代金券