我试图非常简单地计算两个日期之间的天数,我认为固有的语言设置og excel / windows与代码有关,所以如果有人能澄清这实际上就是这种情况或者找到一个解决方案我将非常感激。
我可以找到同一年中任何两个给定日期之间的天数,所以为了论证我需要 - 2015年1月1日& - 2015年1月7日
当我在excel中写下这些日期时,它会将它们格式化为
01 / 01-2015& 07 / 01-2015 因为丹麦日期从一天开始,然后是月份和年份
然后我将它们从ComboBox中抓取到VBA代码中Set wb = ActiveWorkbook
With wb.Sheets("Start").Shapes("from_dropdown")
sd = DateValue(.ControlFormat.List(.ControlFormat.Value))
End With
With wb.Sheets("Start").Shapes("to_dropdown")
ed = DateValue(.ControlFormat.List(.ControlFormat.Value))
End With
但是当我试图计算他们之间的日子时,我得到了150天。我之所以认为它干扰的语言是因为当我展示" sd"和" ed"使用MsgBox,它显示为
01 / 01-2015和01 / 07-2015 IE不是丹麦标准。
以前有人遇到过这个问题吗?有一个修复?或者我只是做其他完全错误的事情。
完整代码是:
Dim wb As Workbook
Dim sd As Date
Dim ed As Date
Dim numDays
Set wb = ActiveWorkbook
With wb.Sheets("Start").Shapes("from_dropdown")
sd = DateValue(.ControlFormat.List(.ControlFormat.Value))
End With
With wb.Sheets("Start").Shapes("to_dropdown")
ed = DateValue(.ControlFormat.List(.ControlFormat.Value))
End With
numDays = DateDiff("d", sd, ed)
MsgBox sd
MsgBox ed
MsgBox numDays
ComboBox提到的excel中的值是
2015年1月1日
2015年2月1日
2015年3月1日
2015年4月1日
2015年5月1日
2015年6月1日
2015年7月1日
2015年8月1日
2015年9月1日
2015年10月1日
答案 0 :(得分:1)
我认为它与函数DateValue
有关。
使用函数Format
结果看起来是正确的:
Dim wb As Workbook
Dim sd As Date
Dim ed As Date
Dim numDays
Set wb = ActiveWorkbook
sd = DateValue("01/01/2015")
ed = DateValue("07/01/2015")
numDays = DateDiff("d", sd, ed) 'numDays = 181
sd = Format("01/01/2015", "dd/mm/yyyy")
ed = Format("07/01/2015", "dd/mm/yyyy")
numDays = DateDiff("d", sd, ed) 'numDays = 6
编辑:日期格式错误