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

如何在Excel中双击自动在单元格中添加/输入当前日期/时间?

如果需要在工作表中频繁插入当前日期或日期时间,可以尝试本文中的方法。 本文将帮助您通过双击自动在指定的范围单元格中添加或输入当前日期或日期齿。

双击以使用VBA代码自动添加/输入当前日期或日期时间


双击以使用VBA代码自动添加/输入当前日期或日期时间

您可以运行下面的VBA代码,通过双击自动在单元格中添加当前日期或日期时间。 请执行以下操作。

1.右键单击要在指定的单元格中插入当前日期的工作表选项卡,然后选择 查看代码 从右键单击菜单中。

2。 在里面 Microsoft Visual Basic应用程序 窗口,将下面的VBA代码复制并粘贴到“代码”窗口中。

VBA代码:双击以将当前日期添加到单元格中

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

说明:

1.在代码中,A1:B10是您要添加当前日期的范围。
2.如果您需要在单元格中添加当前日期时间,请替换 日期现在() 在代码中。 您可以根据需要更改它们。

3。 按 其他 + Q 同时关闭按键 Microsoft Visual Basic应用程序 窗口并返回到工作表。

从现在开始,双击指定范围A1:B10中的任何单元格。 当前日期或日期时间将自动输入。


相关文章:


最佳办公效率工具

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底部
按评论排序
注释 (28)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
我们如何扩展它以添加更多单元格范围? 我在代码中添加了一个这些额外的单元格: (Target, Range("C10:C19", "D10:D19", "E10:E19")) 但是它给了我一个编译错误,说“错误数量的参数或无效的属性分配”,然后突出显示您提供的第一行代码“Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)”请帮助我。
该评论由网站上的主持人最小化
Joel,不知道您是否还在寻找解决方案,但您需要更改代码:

从:(目标,范围(“C10:C19”,“D10:D19”,“E10:E19”))
到:(目标,范围(“C10:C19,D10:D19,E10:E19”))

这将为您完成。
该评论由网站上的主持人最小化
你好尼克,
我想从你那里得到一些关于这个问题的建议......
我有一个文件,我称之为“生产力表”......在时间似乎变得不可改变之后......就像被锁定的东西。)
我很感谢你的时间和thanx提前
匈牙利阿提拉
exyzee@gmail.com
该评论由网站上的主持人最小化
亲爱的阿提拉,
请尝试以下屏幕截图,以在单击时将实际时间插入到特定范围内的单元格中。
(无法实现自动锁定单元格功能,抱歉)

Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A1:B10")) 什么都没有
取消 = 真
Target.Formula = 日期
结束如果
END SUB
该评论由网站上的主持人最小化
该代码确实有效...谢谢...我添加了另一个代码以在输入数据后保护单元格。 现在的问题是,一旦我输入数据并且单元格受到保护,并且如果我错误地双击受保护的单元格,那么整个工作表的上述代码都会出错。 然后它不起作用。 我必须取消保护工作表才能使代码生效。 有什么解决办法吗?

使用的保护代码如下:

私人子Worksheet_Change(按目标的ByVal目标)
将 xRg 调暗为范围
出错时继续下一步
设置 xRg = Intersect(Range("A1:a1000,b1:b1000,G1:G1000"), 目标)
如果 xRg 什么都不是,则退出 Sub
Target.Worksheet.Unprotect 密码:="123"
xRg.Locked = 真
Target.Worksheet.Protect 密码:="123"
END SUB
该评论由网站上的主持人最小化
亲爱的保罗,
我试试你提供的代码。 一旦我将数据输入任何一个指定的受保护单元格,整个工作表将立即受到保护。
此外,当双击受保护的单元格时,我的代码没有任何变化。
你能解释一下你到底想用代码做什么吗?
该评论由网站上的主持人最小化
对不起,我明白你的意思。 (错过上面的代码)
该评论由网站上的主持人最小化
创建的双击进入代码为:


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("A1:a1000")) 什么都没有
取消 = 真
Target.Formula = 日期
结束如果

If Not Intersect(Target, Range("b1:b1000")) 什么都不是
取消 = 真
Target.Formula = 时间
结束如果

If Not Intersect(Target, Range("g1:g1000")) 什么都没有
取消 = 真
Target.Formula = 时间
结束如果
END SUB
该评论由网站上的主持人最小化
亲爱的保罗,
请尝试以下 VBA 代码。

私人子Worksheet_Change(按目标的ByVal目标)
将 xRg 调暗为范围
出错时继续下一步
设置 xRg = Intersect(Range("A1:a1000,b1:b1000,G1:G1000"), 目标)
如果 xRg 什么都不是,则退出 Sub
Target.Worksheet.Unprotect 密码:="123"
xRg.Locked = 真
Target.Worksheet.Protect 密码:="123"
END SUB

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
Application.EnableEvents = False
ActiveSheet.Unprotect 密码:="123"
If Not Intersect(Target, Range("A1:a1000")) 什么都没有
取消 = 真
Target.Formula = 日期
结束如果
If Not Intersect(Target, Range("b1:b1000")) 什么都不是
取消 = 真
Target.Formula = 时间
结束如果
If Not Intersect(Target, Range("g1:g1000")) 什么都没有
取消 = 真
Target.Formula = 时间
结束如果
ActiveSheet.Protect 密码:="123"
Application.EnableEvents = True
END SUB
该评论由网站上的主持人最小化
我复制并粘贴了更新范围的代码,但它不起作用:-(


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("B4:B100")) 什么都不是
取消 = 真
Target.Formula = 现在()
结束如果
END SUB
该评论由网站上的主持人最小化
美好的一天,
该代码在我的情况下运行良好。 你能告诉我你的Office版本吗?
该评论由网站上的主持人最小化
您好,您提供的代码效果很好。 我只是好奇是否有任何方法可以在单元格中显示文本“双击添加日期”,直到输入日期。 提前感谢您(我正在努力使我的文档尽可能用户友好,以免混淆我的同事)
该评论由网站上的主持人最小化
您好,上面的代码对我很有用。 现在我只是想知道是否有办法让文本“双击输入日期”出现在单元格中,直到输入日期。 我的目标是使文档尽可能用户友好。 先感谢您
该评论由网站上的主持人最小化
嗨特拉维斯,
我们无法修改代码以直接在单元格中显示文本。 但或者,下面的优化代码将有助于在单元格注释中显示文本,双击单元格输入日期后,注释将自动删除。

Private Sub Worksheet_SelectionChange(作为范围的ByVal目标)
If Not Intersect(Target, Range("A1:B10")) 什么都没有
Target.NoteText "双击添加日期"
结束如果
END SUB

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("A1:B10")) 什么都没有
取消 = 真
目标.评论.删除
Target.Formula = 日期
结束如果
END SUB
该评论由网站上的主持人最小化
您好,

我完全按照写入空白工作簿的方式复制并粘贴了上面的代码,但是,它对我不起作用。 我查看了网络上的不同来源,大多数网站的格式与上面写的类似。 我想我的 VBA 可能有问题,或者某些设置没有打开。 任何建议将不胜感激。 我在 Windows 365 上运行 Excel for Office 16.0.11001.20097 MSO (32) 10 位。
该评论由网站上的主持人最小化
喜欢代码,它工作得很好。 当我双击执行代码时,我该如何做到这一点,它的显示时间是军事时间?
该评论由网站上的主持人最小化
嗨,迪伦,
抱歉还不能帮你。 感谢您的评论。
该评论由网站上的主持人最小化
我认为,如果您从工作表中的“格式”->“数字”->“时间”选项中选择该单元格的军事时间格式,则应该可以使用。 例如,它提供了下午 1:30 或 13:30 的选项,因此您只需选择 13:30 即可。
该评论由网站上的主持人最小化
我认为,如果您只是从数字-> 时间格式选项中选择该单元格的军事时间格式,那么应该这样做。 例如,您将选择 13:30 而不是 1:30 PM,然后它应该以军用时间显示。
该评论由网站上的主持人最小化
有谁知道是否有办法将此代码插入 Excel Online? 我曾将它与桌面版本一起使用,效果很好,但现在我们已将所有内容迁移到在线平台,双击时我的日期和时间戳消失了,我不知道如何查看或编辑代码。 谢谢。
该评论由网站上的主持人最小化
因此,我插入了代码,它在我的工作簿中的几张工作表上运行良好,但是在某些工作表上,即使我输入了正确的范围,它也会在某一行之后突然停止工作。 关于为什么会发生这种情况的任何想法。
该评论由网站上的主持人最小化
这正是我所寻找的——这节省了大量时间,我很欣赏写得很好的说明。 谢谢!
该评论由网站上的主持人最小化
您好,代码为我做了很多,我如何限制代码仅在字段为空白时才能工作。 如果单元格中已经存在日期,双击应该什么都不做,问候
该评论由网站上的主持人最小化
嗨艾哈迈德,
抱歉,添麻烦了。 要仅通过双击填充带有日期的空白单元格,您可以应用以下 VBA 代码来完成它。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20220609
    If Not Intersect(Target, Range("B1:C20")) Is Nothing Then
        If Target.Value = "" Then
            Cancel = True
            Target.Formula = Date
        End If
    End If
End Sub
该评论由网站上的主持人最小化
此功能不起作用。 双击只是进入手动编辑单元格。
该评论由网站上的主持人最小化
鲍勃,
该代码在我的情况下运行良好。 我需要更具体地了解您的问题,例如您的 Excel 版本。
该代码仅适用于您指定的单元格。
该评论由网站上的主持人最小化
大家好,

我尝试使用该宏来使用日期戳双击列 E 并且它正在工作但是当我尝试复制宏以执行相同的操作但是对于列 F 上的当前时间它不起作用,因为您可以看到附件我有一条错误消息说明:检测到不明确的名称。
当我尝试将 Sub WorkSheet 部分更改为另一个名称并双击单元格时,没有任何反应。

有人可以帮我吗?

我的代码:


Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("E1:E10000")) 什么都没有
取消 = 真
Target.Formula = 日期
结束如果
END SUB

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
If Not Intersect(Target, Range("F1:F10000")) 什么都没有
取消 = 真
Target.Formula = 现在()
结束如果
END SUB
查看附件 (1 / 5)
该评论由网站上的主持人最小化
嗨路易斯,
复制宏将导致在单个工作表代码窗口中具有相同名称的两个相同过程。 Excel 不允许在一个模块中使用两个或多个相同名称的函数。 甚至在事件中也没有。 它会导致歧义。
如果你想对同一个事件做不同的任务,你需要修改原来的代码来满足你的需要。
下面的 VBA 代码可以帮你一个忙。 请试一试。
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Updated by Extendoffice 20221025
    If Not Intersect(Target, Range("E1:E10000")) Is Nothing Then
        Cancel = True
        Target.Formula = Date
    End If
    If Not Intersect(Target, Range("F1:F10000")) Is Nothing Then
        Cancel = True
        Target.Formula = Date
    End If
End Sub
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

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