0

我在单元格“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 中的格式正确。

我需要这个,所以我可以做一个排序,事实上,它杀了我。

4

1 回答 1

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
于 2013-07-03T00:27:56.080 回答