如果我在VBA中添加两个date,到底发生了什么

请帮助我发生在这里 – 我知道这是愚蠢的,但我想知道。

下面的代码的输出是四月-18-2105。 它是如何popup的?

Private Sub CommandButton1_Click() Dim firstDate As Date, secondDate As Date firstDate = DateValue("Jun 19, 2010") secondDate = DateValue("oct 29,1994") MsgBox (firstDate + secondDate) End Sub 

提前致谢!

date实际上是以数字forms存储的,所以如果我们查看这些date的数字值:

 CLng(datevalue("Jun 19, 2010")) '// 40348 CLng(datevalue("oct 29, 1994")) '// 34636 

并将它们添加在一起:

 40348 + 34636 = 74984 

并将号码转换回date:

 CDate(74984) '// 18/04/2105 

因为00/01/1900之后是74,984天

date是数字,格式为dd / mm / yyyy,我想是从18/12/1899的日子,这就是发生了什么事情。 结果是40348 + 34636 = 74984,这是18/04/2105。

Excel将date存储为指定date之后的天数。 因此,表示2010/06/19date的整数是40348,表示1994/10/29的整数是34636.当您将这些整数相加时,将得到74984,即代表2105/04/18的整数。

引用date因Mac而异。 我在Windows上运行,我没有改变我的参考date设置,这是那些整数来自哪里。 Mac使用1904年1月2日作为第1天,Windows使用1900年1月1日作为第1天。