VBA语言(可能)用代码进行交stream

我试图非常简单地计算两个date之间的天数,我认为固有的语言设置og excel / windows是与代码inteintering,所以如果任何人可以澄清这是事实的情况下,或find一个解决scheme,我会非常感激。

我应该能够find同一年中任何两个给定date之间的天数,所以为了争辩,我采取了 – 2015年1月第一次和 – 2015年1月第七

当我在Excel中写入这些date时,将它们格式化为

01 / 01-2015&07 / 01-2015由于丹麦date从一天开始,然后是月份和年份

然后我把他们从一个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”和“编辑”与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日

我认为它与函数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 

编辑:错误的date格式