有没有办法在VBA中获取Date
函数的基础整数?我指的是Excel存储的整数,用天数来描述内存中的日期(当包含时间时,它可以是浮点数然后我猜)。我只对整数部分感兴趣。是否还有其他功能?
例如,今天()我希望能够回到40877 ..
谢谢你们;)
答案 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中使用它:)