excel - 自动日期/时间戳有时不起作用
问题描述
我不确定是因为我使用的是 Office 2016 还是我的文件变得太大 (450KB) 但有时我的日期/时间戳代码不起作用(运行时错误)。我相信代码和表单是在我使用 excel 2013 时开发的。
代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CC As Range
Dim CB As Range
Application.EnableEvents = False
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
For Each CC In Intersect(Range("C16:C101"), Target)
If CC.Value <> "" Then
CC.Offset(, -2).Value = Date & " "
CC.Offset(, -2).NumberFormat = "mm/dd/yy"
End If
Next CC
End If
Application.EnableEvents = True
Application.EnableEvents = False
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
For Each CC In Intersect(Range("C16:C101"), Target)
If CC.Value <> "" Then
CC.Offset(, -1).Value = Time & " "
CC.Offset(, -1).NumberFormat = "hh:mm"
End If
Next CC
End If
Application.EnableEvents = True
End Sub
解决方案
- 把两个单元格写在一起;原来的两个引用了相同的范围。
- 将尾随空格放入单元格编号/日期格式中。实际值中的尾随空格可能会将值更改为文本。
- 在您知道自己确实需要它之前,无需设置或声明任何东西。不要声明您不打算使用的变量。
- 一点错误控制从来都不是坏事。
代码重写:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
on error goto safe_exit
Application.EnableEvents = False
Dim CC As Range
For Each CC In Intersect(Range("C16:C101"), Target)
If CC.Value <> "" Then
CC.Offset(, -1).Value = Time
CC.Offset(, -2).Value = Date
CC.Offset(, -1).NumberFormat = "hh:mm_)"
CC.Offset(, -2).NumberFormat = "mm/dd/yy_)"
End If
Next CC
End If
safe_exit:
Application.EnableEvents = True
End Sub
推荐阅读
- reactjs - 如何使用 Jest 测试 useParam() 函数
- java - 用 jar 文件打开 Cmd 并执行程序
- audio - 用 arecord 录制 4 个通道有什么特别的注意事项吗?
- docker - 从一个 docker 容器无密码登录到另一个
- firebase - 在 Firebase 中更改登录方法
- javascript - 单击按钮时以特殊顺序保存数据
- c# - 从模型中的多个列表中选择并将其放在下拉列表中
- powershell - 在多台远程计算机上运行 Powershell 脚本
- xamarin - 如何修复更新到 Visual Studio 2019 版本 16.7.0 后出现的错误
- swift - 在 Swift 中将 JSON yyyy-mm-ddthh:mm:ssz 字符串转换为可读格式?