我将此值插入单元格“02-01-2013”
Range("C2").Offset(aPos, 0).NumberFormat = "dd/mm/yy;@"
Range("C2").Offset(aPos, 0).Value = forma(t1, 2, t2)
MsgBox forma(t1, 2, t2)
其中的MsgBox命令正确显示,因此字符串正确到达代码,导致msgbox显示确定,但是当第二行执行此操作时,它将其记录为“01-02-2013”,注意日/月倒置,我已经尝试了一切,无法弄清楚为什么会发生这种情况,我甚至在接收数据之前添加了第一行强制格式,但仍然没有运气。所有输入字段均以dd / mm / yy格式正确格式化。
我需要这个,所以我可以做一个,实际上它会杀了我。
答案 0 :(得分:1)
将字符串值放入日期格式的单元格时,您要求Excel将该值转换为实际日期。它是如何做的取决于您的本地设置和实际价值......
Sub Tester()
Debug.Print CDate("02-01-2013") '2/1/2013
Debug.Print CDate("20-01-2013") '1/20/2013
Debug.Print CDate("02-22-2013") '2/22/2013
End Sub
如果您想要更多控制权,并且您知道字符串采用特定格式:
Dim tmp As String, arr, dt As Date
tmp = "02-01-2013" 'forma(t1, 2, t2)
arr = Split(tmp, "-")
dt = DateSerial(arr(2), arr(1), arr(0))
Debug.Print dt