zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    简单背包问题
    拓扑排序
    SPFA--P3905 道路重建
    Floyd--P1119 灾后重建
    Kmp--P3375 【模板】KMP字符串匹配
    练习 后缀数组
    BZOJ1036: [ZJOI2008]树的统计Count(树链剖分)
    BZOJ1503: [NOI2004]郁闷的出纳员(Splay)
    BZOJ2733: [HNOI2012]永无乡(线段树合并)
    BZOJ4196: [Noi2015]软件包管理器(树链剖分)
  • 原文地址:https://www.cnblogs.com/shida-liu/p/9517133.html
Copyright © 2011-2022 走看看