VBA日期为整数

时间:2011-11-30 18:16:44

标签: date datetime excel-vba vba excel

有没有办法在VBA中获取Date函数的基础整数?我指的是Excel存储的整数,用天数来描述内存中的日期(当包含时间时,它可以是浮点数然后我猜)。我只对整数部分感兴趣。是否还有其他功能?

例如,今天()我希望能够回到40877 ..

谢谢你们;)

4 个答案:

答案 0 :(得分:28)

日期不是VB(A)中的整数,它是双精度。

您可以将日期值传递给CDbl()

CDbl(Now())      ' 40877.8052662037 

要获取整数部分,请使用

Int(CDbl(Now())) ' 40877

将返回 Long Double,没有小数位(即Floor()在其他语言中会做什么)。

使用CLng()Round()会导致四舍五入,在中午12:00之后调用将返回“将来的一天”,所以不要这样做。

答案 1 :(得分:10)

只需使用CLng(Date)

请注意,您需要使用Long而不是Integer,因为当前日期的值为> 32767

答案 2 :(得分:1)

Public SUB test()
    Dim mdate As Date
    mdate = now()
    MsgBox (Round(CDbl(mdate), 0))
End SUB

答案 3 :(得分:1)

您可以使用比较日期字符串的下方代码示例,例如mdate和Now(),比如toDay,您也可以像日历一样计算日期之间的差异

Public Sub test(mdate As String)
    Dim toDay As String
    mdate = Round(CDbl(CDate(mdate)), 0)
    toDay = Round(CDbl(Now()), 0)
    Dim Aging as String
    Aging = toDay - mdate
    MsgBox ("So aging is -" & Aging & vbCr & "from the date - " & _
    Format(mdate, "dd-mm-yyyy")) & " to " & Format(toDay, "dd-mm-yyyy"))
End Sub

注意:使用CDate将日期字符串转换为有效日期

我在Office 2007中使用它:)