Note: The other languages of the website are Google-translated. Back to English

单元格更改时如何自动记录日期和时间?

对于我们来说,手动插入静态日期和时间很容易,也可以通过公式插入随系统时间变化的动态日期。 如果要在更改或输入值时自动记录日期和时间,此问题可能会有所不同。 但是,在本文中,您可以通过以下步骤解决此任务。

使用VBA代码更改单元格时自动记录日期和时间

Office选项卡在Office中启用选项卡式编辑和浏览,并使您的工作更加轻松...
Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%
  • 重用任何东西: 将最常用或最复杂的公式,图表等添加到您的收藏夹中,并在将来快速重用它们。
  • 超过20种文字功能: 从文本字符串中提取数字; 提取或删除部分文字; 将数字和货币转换为英文单词。
  • 合并工具:将多个工作簿和工作表合二为一; 合并多个单元格/行/列,而不会丢失数据; 合并重复的行和总和。
  • 分割工具:根据价值将数据分割成多个工作表; 一本工作簿可转换为多个Excel,PDF或CSV文件; 一列到多列。
  • 跳过粘贴 隐藏/过滤的行; 计数与求和 按背景色; 向多个收件人批量发送个性化电子邮件。
  • 超级过滤器: 创建高级过滤方案并应用于任何工作表; 排序 按星期,日期,频率等 筛选器 用粗体,公式,注释...
  • 超过300种强大的功能; 适用于 Office 2007-2021 和 365; 支持所有语言; 在您的企业或组织中轻松部署。

箭头蓝色右气泡 使用VBA代码更改单元格时自动记录日期和时间

例如,我有一个值范围,现在,当我在B列中更改或键入新值时,我希望在那里将在C列中自动记录当前日期和时间,如以下屏幕截图所示:

文档更新时间值更改 1

您可以使用以下VBA代码完成此任务。 请这样做:

1。 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications窗口。

2。 然后从左侧选择您使用的工作表 项目浏览器,双击以打开 模块,然后将以下VBA代码复制并粘贴到空白模块中:

VBA代码:单元格更改时自动记录日期和时间

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

文档更新时间值更改 1

3. 然后保存并关闭此代码以返回到工作表,现在,当您更改单元格值或在B列中键入新数据时,日期和时间将自动记录在C列中。

笔记:

1.在以上代码中,您可以修改“B:B”更改为您要在此脚本中更改单元格值的任何其他列: 设置WorkRng = Intersect(Application.ActiveSheet.Range(“ B:B”),目标).

2.与此 xOffsetColumn = 1 脚本中,您可以将日期和时间插入并更新到更改值列旁边的第一列,可以将数字1更改为其他数字,例如2,3,4,5…,这意味着日期将被插入第二,第三,第四或第五列,以及更改后的值列。

3.在更改的列中删除值时,日期和时间也将被删除。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (108)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
您如何编写代码以在一页上多次执行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?
该评论由网站上的主持人最小化
[quote]你如何编写代码在一页上多次执行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?希拉里[/quote] 我知道这是旧的,但是漫长而简单的方法是复制变量声明并创建新变量(即 WorkRng1 和 Rng1)。 您还必须复制“if”语句并将变量更改为新的变量名称。
该评论由网站上的主持人最小化
[quote]你如何编写代码在一页上多次执行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?希拉里[/quote] 这里是代码: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer '更改范围以选择要更新的列,即(“A: A") or ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 '为第二个时间戳'新建变量名,如WorkRng1, Rng1 等 Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 '对于第一个时间戳如果不是 WorkRng Is Nothing然后 Application.EnableEvents = False For Each Rng In WorkRng If Not VBA.IsEmpty(Rng.Value) Then Rng.Offset(0, xOffsetColumn).Value = Now Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If '对于第二个时间戳 If Not WorkRng1 is Nothing Then Application.EnableEve nts = False For Each Rng1 In WorkRng1 If Not VBA.IsEmpty(Rng1.Value) Then Rng1.Offset(0, xOffsetColumn1).Value = Now Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Else Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
该评论由网站上的主持人最小化
如果我想对一系列列执行此操作怎么办?
该评论由网站上的主持人最小化
像这样更改范围 (B:B): (10:20) 用于 D 行的第 10 到 20 列 (D5:D40) 用于 D 行的第 5 到 40 列 希望它有所帮助。
该评论由网站上的主持人最小化
抱歉,我用行交换列,但它仍然有效。 (D:P) 从 D 列到 P (D5:D5) 从 D 列到第 5 行的 P
该评论由网站上的主持人最小化
当我保存它工作但当我重新打开时不起作用
该评论由网站上的主持人最小化
[quote]当我保存它时,当我重新打开时不起作用由阿里夫[/quote] 和 Aarif 一样的问题......半小时前它工作了,现在它没有......而且,我只想要时间而不是日期和时间,所以我将“.NumberFormat”编辑为只是hh:mm:ss,保存,测试它......没有什么不同......仍然输入日期和时间......? 再次打开VB,输入一些带分隔符的文本,再次保存,仍然不行,然后我又做了第三次,格式按照它说的那样做,突然我得到了时间。 很奇怪我一直以为 Excel 闹鬼了,自从我第一次使用 SEARCH 函数,在单元格中搜索一个我可以亲眼看到的值,但 Excel 坚持它不存在!? 任何可以提供帮助的 Excel 大师或驱魔师? 为什么它会忽略我的 VB 而不是像它那样加时间戳...? 谢谢你:哭:
该评论由网站上的主持人最小化
[quote]你如何编写代码在一页上多次执行此操作 例如。 B 列中的文本,C 中的日期和 D 中的文本,E 中的日期?希拉里[/quote] 引用的答案是什么
该评论由网站上的主持人最小化
如果我希望它运行但不在活动工作表上,那么在后台运行并在 B 列中有条目时更新怎么办?
该评论由网站上的主持人最小化
如果影响时间戳列的列是多个其他列的总和怎么办? 例如... H 列是 =Sum(E+F+G) 并且我希望在每次更改 H 列时在 I 列中完成时间戳,或者本质上当 E、F 或 G 列已更改时. 你能帮忙吗??
该评论由网站上的主持人最小化
我需要帮助! 每次更改三个单元格之一时,我都试图完成一个时间戳。 理想情况下,当这些单元格的总和已更改时,我希望这样做。 例如。 单元格 E、F、G 将被更改,单元格 H 将是这三个单元格的总和。 当单元格 H 已更改时,我希望为单元格 I 加上时间戳。 这可能吗?? 太感谢了
该评论由网站上的主持人最小化
我正在尝试运行上面的代码; 但是,我要记录的更改的单元格链接到一个复选框,因此要么是“TRUE”,要么是“FALSE”。 由于某种原因,当单元格更改时,代码将不起作用。 但是,如果我手动插入说“是”,则代码可以正常工作。 您知道此问题的任何解决方法吗? 谢谢!
该评论由网站上的主持人最小化
是否可以对历史数据执行此操作? 如果我昨天或一个月前对单元格进行了更改,我可以使用此代码的一种形式来检索这些日期吗?
该评论由网站上的主持人最小化
有没有办法根据特定的变化来标记时间戳? 例如,我有一个电子表格,其中有一列下拉选项,包括空白、“Ok”和“Act”。 任务完成后,手动使用下拉菜单选择“确定”。 我希望在选择“Ok”时绑定日期戳,而不是在选择“Act”时绑定。 当任务过期时使用下拉菜单中的“Act”选项,但我真的只是想跟踪项目何时完成。 有没有办法用上面的代码完成这个? 谢谢!
该评论由网站上的主持人最小化
你能解决这个问题吗?
该评论由网站上的主持人最小化
这是一个很好的问题。 你整理好了吗,可以分享一下方法吗?
谢谢
该评论由网站上的主持人最小化
我可以将范围更改为(“A:Q”),但如果任何 AQ 单元格中的数据被更改/删除,我需要日期和时间进入“S”。 我是 VBA 挑战。 任何帮助是极大的赞赏!
该评论由网站上的主持人最小化
抱歉,我刚刚发布了一个问题,我需要这个问题的答案……我一定错过了这条评论……希望有人能提供帮助!
该评论由网站上的主持人最小化
如何更改它,以便只有相邻的单元格日期更改?
该评论由网站上的主持人最小化
如何获取时间戳以记录在特定单元格中,而不是更改后的单元格旁边的单元格。 我试图在任何这些单元格中发生更改时为一排单元格加上时间戳,我希望时间戳记录在一个特定的单元格中......有人可以帮忙吗? 谢谢!
该评论由网站上的主持人最小化
嗨,非常感谢您,因为它对 WB 的可审计性非常有用。 有没有办法改变它,以便在添加或修改评论时将日期/时间记录在 WB 的某处? 我知道这是一个普遍的问题,但我不确定它是否可能(不幸的是,对于 MS 2010,.comment 属性不包含日期属性来识别它何时输入。迈克
该评论由网站上的主持人最小化
我如何配置读取 A:A 列并仅在输入 14 位数字时在 B:B 中给出时间戳?
该评论由网站上的主持人最小化
嗨,我需要一些 VBA 编码帮助。 我正在创建一个包含案例的电子表格,这些案例将分配给人员并具有案例状态。 受让人将在 Col H 中,当 Col H 中的单元格更新或更改名称时,我需要在 Col I 中添加日期戳。 同样,我将在 Col J 中获得案例状态,并且在输入或更改状态时需要在 Col K 中添加日期戳。 同样,当没有受让人姓名或状态时,我需要 Col I 和 K 中的日期戳为空白。 任何帮助,将不胜感激。 谢谢
该评论由网站上的主持人最小化
我在别处找到了这段代码并对其进行了修改以供我使用。 如果操作正确,您无需担心在单元格中输入函数或文件每次打开时都会将日期更改为当天的日期。 - 打开 Excel - 按“Alt+F11” - 双击要应用更改的工作表(在左侧列出) - 复制/粘贴下面的代码 - 调整 Range(_:_) 输入以对应到您将更新的列 - 调整 Offset(0,_) 输入以对应于您希望显示日期的列(在下面的版本中,我正在对 D 列进行更新,我希望在 F 列中显示日期,因此,从 D 列开始的 2 列输入“2”条目 - 点击保存 - 如果您的工作簿中有其他工作表需要相同的代码,请重复上述步骤 - 您可能必须更改显示列的数字格式将日期更改为“常规”,如果在您更新条目后显示“####”,则增加列的宽度 复制/粘贴以下代码: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) 什么都没有然后退出 Sub Target.Offset(0, 2) = Date End Sub ___ _________________________________________________________ 祝你好运...
该评论由网站上的主持人最小化
此代码将在单击时显示日期,是否可以仅在单元格中的内容更改时显示日期,如果仅单击并且没有任何更改,则日期不显示或先前输入的日期保留?
该评论由网站上的主持人最小化
当我在宏中记录一个 vloocup 公式时,我如何才能将该日期自动更改为 1 天,就像它的 21/07/2017 然后第二天更改为 22/07/2017 如果有任何 vba 代码,请自动分享。
该评论由网站上的主持人最小化
替换这一行
Rng.Offset(0, xOffsetColumn).Value = 现在


Rng.Offset(0, xOffsetColumn).Value = Now+1
该评论由网站上的主持人最小化
非常感谢您的代码! 正是我想要的!
该评论由网站上的主持人最小化
感谢您的帮助 :-)
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护