2015-04-03 39 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