2015-04-03 38 views
0

我试图很简单地计算两个日期之间的天数,我认为固有的语言设置og excel/windows是与代码互动,所以如果任何人可以澄清的是事实上是这样,或者找到一个解决方案,我会非常感激。VBA语言(可能)用代码

我也应该能够找到天同年任何给定的两个日期之间的数,所以争论的缘故,我拿 - 2015年1月的第一个& - 2015年1月

的第七当我在Excel中写这些日期是它们编辑成

01/01-2015 & 07/01-2015 因为丹麦的日期与当天开始,然后是年份和月份

然后我从抓住他们有限公司mboBox到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 

,并在Excel中的值与组合框的参考是

2015年1月1日

2015年2月1日

03/01/2015

04/01/2015

2015年5月1日

2015年6月1日

2015年7月1日

2015年8月1日

2015年9月1日

10/01/2015

回答

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 

编辑:错误的日期格式

+0

非常感谢!那是做的!,我正在将我的头撞在墙上:P – 2015-04-03 13:08:30