有沒有辦法在VBA中獲得Date
函數的底層整數?我指的是Excel中存儲的整數,用天數來描述內存中的日期(當時間被包含時,它可以是一個浮點數,然後我猜)。但我只對整數部分感興趣。那還有另外一個功能嗎?VBA日期整數
例如,對於今天()我希望能夠找回40877 ..
謝謝你們;)
有沒有辦法在VBA中獲得Date
函數的底層整數?我指的是Excel中存儲的整數,用天數來描述內存中的日期(當時間被包含時,它可以是一個浮點數,然後我猜)。但我只對整數部分感興趣。那還有另外一個功能嗎?VBA日期整數
例如,對於今天()我希望能夠找回40877 ..
謝謝你們;)
日期是不是在VB(A)的整數,它是一個雙。
您可以通過將日期值傳遞給CDbl()
來獲取日期值。
CDbl(Now()) ' 40877.8052662037
爲了得到整數部分,使用
Int(CDbl(Now())) ' 40877
這將返回一個
龍
雙不帶小數位(即什麼Floor()
會在其他語言中一樣)。
使用CLng()
或Round()
會導致四捨五入,這將在中午12:00之後調用時返回「未來日」,所以不要這樣做。
Public SUB test()
Dim mdate As Date
mdate = now()
MsgBox (Round(CDbl(mdate), 0))
End SUB
您可以使用波紋管的代碼示例日期字符串如mdate和NOW()像今天一樣,你也可以兩個日期之間的計算尊重像老
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
NB:用於CDate
的轉換日期字符串有效期
我在Office 2007中使用這個:)
Int(CDbl(Now()))不會返回一個long,它會返回一個double。 double的值恰好代表一個整數,但它的數據類型仍然是double。 – phoog
@phoog:'TypeName(VarType(Int(CDbl(Now()))))=「Long」'在我的系統 – Tomalak
@Tomalek當然,因爲VarType(Int(CDbl(Now())))'''' 5,這是'vbDouble'的值,但它本身就是'Long'。嘗試'TypeName(Int(CDbl(Now())))'。 – phoog