VBA Datediff功能无法正常工作

时间:2014-10-21 09:10:34

标签: excel vba date excel-vba

datediff函数不会返回正确的值。我只是想知道几个月之间的日子差异:2014年1月1日(开始日期)和30/03/2014(结束日期)

我测试过的代码:

Dim date1 as date

dim date2 as date

dim test as long

date1 = "1/03/2014"

date2 = "30/03/2014"

test = datediff("d", date1 , date2)

msgbox test

上面的代码返回86 n,而不是29 但是如果我把2014年1月1日(开始日期)和2014年1月30日(结束日期)放在一起,结果是29天。

我如何获得正确的值(在这种情况下(3月),29天)?

3 个答案:

答案 0 :(得分:2)

使用

DateSerial(2014, 3,1)DateSerial(2014, 3,30)

设置日期。通过使用字符串,字符串被解释为日期,3月1日被解释为1月3日。月份和日期都会切换。

跟进你的评论,一个简单的转换用于你的文本框而没有任何有效性测试:

strDate = "1/30/2014" 'as an example of the value coming from your TextBox
dateParts = split(strDate, "/") 'returns the date parts an array (zero based)

date1 = dateSerial(datePart(2), datePart(1), datePart(0))

答案 1 :(得分:0)

不要使用字符串并允许VBA尝试将它们解释为日期 - 使用DateSerial并具体说明:

date1 = DateSerial(2014, 3, 1)

date2 = DateSerial(2014, 3, 30)

答案 2 :(得分:-2)

试试这个:

Dim date1 as date

dim date2 as date

dim test as long

date1 = "1/03/2014"

date2 = "30/03/2014"

test = datediff("y", date1 , date2)

msgbox test