VBA當中的時間日期函數


目前還沒發現VBA中有直接的函數能夠將完整的年月日時分秒的文本格式日期轉換成日期型日期的,那只能使用間接實現的辦法。用dateserial + timeserial的方法。因為dateserial和timeserial兩個都是時間格式的,故可以直接相加,形成的效果和正常日期格式一致。如下圖c和f,都是日期+時間形成的。那么再和其他的日期做比較就方便的多了。

 

 

 

 

 

If Hour(Range("q" & ddfp)) >= 8 And Hour(Range("q" & ddfp)) < 16 Then
ThisWorkbook.Sheets("運營日報").Range("r" & ddfp) = DateDiff("n", .Range("u" & dft), .Range("aa" & dft)) / 60 '訂單分配用時,時間相隔小時數
ThisWorkbook.Sheets("運營日報").Range("s" & ddfp) = DateDiff("n", .Range("aa" & dft), .Range("x" & dft)) / 60 '倉配交接用時,時間相隔小時數
ThisWorkbook.Sheets("運營日報").Range("u" & ddfp) = WorksheetFunction.Sum(ThisWorkbook.Sheets("運營日報").Range("R" & ddfp & ":" & "T" & ddfp))

ElseIf Hour(Range("q" & ddfp)) >= 16 And Hour(Range("q" & ddfp)) < 24 Then
ThisWorkbook.Sheets("運營日報").Range("r" & ddfp) = 0
ThisWorkbook.Sheets("運營日報").Range("s" & ddfp) = 0
a = VBA.DateSerial(Year(Range("q" & ddfp)), Month(Range("q" & ddfp)), Day(Range("q" & ddfp)) + 1)   '日期函數,和worksheetfunction的date函數使用方法和效果都一樣。
b = VBA.TimeSerial(8, 0, 0)   '時間函數,和worksheetfunction的time函數方法和效果一樣。
c = a + b

d = VBA.DateSerial(Year(Range("ab" & ddfp)), Month(Range("ab" & ddfp)), Day(Range("ab" & ddfp)))
e = VBA.TimeSerial(Hour(Range("ab" & ddfp)), Minute(Range("ab" & ddfp)), Second(Range("ab" & ddfp)))
f = d + e

h = Hour(f - c) + Minute(f - c) / 60        '小時數= 小時數+分鍾數/60


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM