使用 Worksheet_Change 自动将日期更改为 YYYYMMDD 格式
Automatically changing dates to YYYYMMDD format with Worksheet_Change
我正在为我所在地区的员工制作一份防错工作表。我们的系统需要通过 excel 工作表进行输入。连同我已经添加的其他验证,我需要将生日日期转换为格式 YYYYMMDD
as string/number 因为使用自定义格式将其切换到 Excel 时会在系统上出现错误已上传(我猜它仍然将日期读取为 DD/MM/YYYY)。
所以我尝试使用 Worksheet_Change()
所以当用户输入任何日期 DD/MM/YYYY
它会自动转换为所需的结果。
If Not Intersect(Target, Columns("G")) Is Nothing Then
On Error Resume Next
fecnacadd = Target.Address
fecnac = Target.Value
fecnacadd = Format(fecnac, "yyyymmdd")
Columns("G").NumberFormat = "General"
End If
此代码在调试时运行异常(正确显示 'YYYYMMDD')但 运行 它按原样获取宏循环 (?) 10 秒,然后删除细胞.
感谢我的代码中的任何提示。
已解决,它是日期格式证明(与 DD 或 MM 的顺序无关)。还在评论中添加了建议。谢谢!
If Not Intersect(Target, Columns("G")) Is Nothing Then
Application.EnableEvents = False
On Error Resume Next
fecnacadd = Target.Address
fecnac = Format(Target.Value, "YYYYMMDD")
Target.Value = fecnac
Columns("G").NumberFormat = "General"
Application.EnableEvents = True
End If
我正在为我所在地区的员工制作一份防错工作表。我们的系统需要通过 excel 工作表进行输入。连同我已经添加的其他验证,我需要将生日日期转换为格式 YYYYMMDD
as string/number 因为使用自定义格式将其切换到 Excel 时会在系统上出现错误已上传(我猜它仍然将日期读取为 DD/MM/YYYY)。
所以我尝试使用 Worksheet_Change()
所以当用户输入任何日期 DD/MM/YYYY
它会自动转换为所需的结果。
If Not Intersect(Target, Columns("G")) Is Nothing Then
On Error Resume Next
fecnacadd = Target.Address
fecnac = Target.Value
fecnacadd = Format(fecnac, "yyyymmdd")
Columns("G").NumberFormat = "General"
End If
此代码在调试时运行异常(正确显示 'YYYYMMDD')但 运行 它按原样获取宏循环 (?) 10 秒,然后删除细胞.
感谢我的代码中的任何提示。
已解决,它是日期格式证明(与 DD 或 MM 的顺序无关)。还在评论中添加了建议。谢谢!
If Not Intersect(Target, Columns("G")) Is Nothing Then
Application.EnableEvents = False
On Error Resume Next
fecnacadd = Target.Address
fecnac = Format(Target.Value, "YYYYMMDD")
Target.Value = fecnac
Columns("G").NumberFormat = "General"
Application.EnableEvents = True
End If