VBA智能记录指定列更新时间戳
创作时间:
作者:
@小白创作中心
VBA智能记录指定列更新时间戳
引用
CSDN
1.
https://blog.csdn.net/taller_2000/article/details/137742291
在Excel中,我们常常需要记录某些关键数据的修改时间,以便追溯变更历史。本文将介绍如何使用VBA实现这一功能,并支持用户在表格中插入/删除列等操作。
实际应用场景
某公司产品统计表如下所示,为了便于追溯变更,如果用户修改了“厂家指导价”或者“供货价”,那么“修改时间列”需要记录当前的时间。
功能需求
为了满足各种使用场景,此功能需要支持以下情况:
- 用户可以在任意位置插入/删除列
- 用户可以在表格之上或左侧插入任意多行
实现代码
Private Sub Worksheet_Change(ByVal Target As Range)
Const KEY_COL = "厂家指导价|供货价"
Const UPDATE_COL = "修改时间"
Const TAB_NAME = "Tab_Product"
With Target
If .CountLarge > 1 Then Exit Sub
Dim oTab As ListObject: Set oTab = .ListObject
If oTab Is Nothing Then Exit Sub
If UCase(oTab.Name) <> UCase(TAB_NAME) Then Exit Sub
Dim r As Range: Set r = Application.Intersect(oTab.HeaderRowRange, Target)
If Not r Is Nothing Then Exit Sub
Set r = Application.Intersect(oTab.HeaderRowRange, .EntireColumn)
If InStr(1, KEY_COL, r.Value) > 0 Then
Dim updateCell As Range, iCol
iCol = Application.Match(UPDATE_COL, oTab.HeaderRowRange, 0)
If IsError(iCol) Then Exit Sub
Set updateCell = Application.Intersect(oTab.ListColumns(iCol).Range, .EntireRow)
Application.EnableEvents = False
updateCell.Value = Format(Now(), "yyyy/MM/dd hh:mm:ss")
Application.EnableEvents = True
End If
End With
End Sub
代码解析
- 第2行代码定义常量为监控列的标题行名称,以竖线分隔。
- 第3行代码定义常量为时间戳所在列标题名称。
- 第4行代码定义常量为表格(ListObject对象)名称。
- 第6行代码如果多个单元格发生变化,则终止代码执行。
- 第7行代码获取Target单元格所在的表格,如果对象不存在,说明Target不在表格中,则第8行代码终止代码执行。
- 如果Target在表格中,第9行代码判断表格名称是否为指导名称,如果不满足条件,则终止代码执行。
- 第10行代码获取Target和表格标题行的交叉区域,即判断Target是位于标题行中。
- 如果Target位于标题行中,第11行代码终止代码执行,即无需更新时间戳。
- 第12行代码获取Target所在列的标题行名称。
- 第13行代码判断标题行名称存在与监控列表中。
- 第14行代码调用工作表函数Match在表格标题行中查找时间戳列名称。
- 第15行代码如果返回结果为错误值(说明表格中不存在时间戳列),则终止代码执行。
- 第17行代码获取Target所在行和时间戳列的交叉位置单元格。
- 第18行代码禁用系统事件事件处理功能。
- 第19行代码更新时间戳。
- 第20行代码恢复系统事件处理功能。
热门推荐
牙科专家揭秘:牙龈出血的真正原因
南京大学2024强基计划:高考成绩占比85%,实施本研衔接培养
高德地图带你畅游“齐鲁天路”
罗泾水源涵养林:湿地风光、星空摄影与宠物友好型休闲胜地
快速繁殖反成致命伤,巴西龟价格暴跌95%养殖户亏损
新手养草龟完全指南:从选购到日常护理
秋冬咳嗽有白痰?盐酸氨溴索等中西药治疗方案详解
中国最大活火山群现身腾冲,80处温泉打造地热天堂
秋冬腾冲:97座火山、万亩银杏,还有温泉古镇等你探
如皋董糖:一颗承载四百年匠心的非遗美食
宁夏首创“技术入股”模式,107项农业科研成果落地转化
福厝新春嘉年华启动:三坊七巷上演非遗+科技文旅新体验
冷兵器中的“同胞兄妹”,这种造型相似的奇门冷兵器,你分得清吗?
费曼学习法详解:如何通过教授他人掌握物理知识
竹盐枇杷干:健康零食界的黑马?
玩转潮安文祠畲族村落——李工坑
旅行途中高速连拍技巧:捕捉瞬间之美绝妙指南
如何感恩父母?
香港海港城:700家品牌店与70家餐厅,一站式购物美食指南
励志古诗的七言绝句
埋藏千年的石碑 揭开一代“诗窖”的神奇故事
苹果手机数据恢复指南:备份与恢复技巧助你找回重要信息
捡到贵重物品怎么办?这份处理指南请收好
银行从业人员之殇——违法发放贷款的“罪与罚”
炒鸡蛋的正确打开方式:从选材到食用全攻略
含锌牙膏和抗菌漱口水:告别牙龈出血的科学解决方案
新时代女权主义双突破:观念革新与多元行动并进
维生素C护牙龈,告别牙龈出血烦恼
第三代降脂药匹伐他汀钙:降脂效果好,但需关注肝功能
苏州水乡深度游:周庄夜色、同里园林、山塘七里