下面的这个函数比DateValue快一倍多
Function DateValue2(str1 As String) As Date
    arr = Split(str1, "-")
    DateValue2 = DateSerial(Val(arr(0)), Val(arr(1)), Val(arr(2)))
End Function

解决方案 »

  1.   

    如果DateDiff传的是Date类型的数据是很快的
      

  2.   

    下面是在我的机器上做的测试
    For i = 1 To 8000
        p1 = DateDiff("d", DateValue2("200-12-10"), DateValue2("2002-12-10"))
    Next i
    用0.671秒
    For i = 1 To 8000
        p1 = DateDiff("d", DateValue("200-12-10"), DateValue("2002-12-10"))
    Next i
    用1.272秒
    For i = 1 To 8000
        p1 = DateDiff("d", "200-12-10", "2002-12-10")
    Next i
    用2.463秒
      

  3.   

    不是,我的破机器是台 233M,慢如牛爬呀。再说写程序总也要考虑大家用的机器不一定很快呀。我是第一个例子 :(是一段图形绘制,按日期顺序的循环,10年接近 3650 次吧,每次循环都要靠日期函数跳过节价日及周么,因为数据只有在周一到周五正常工作日才有,比如当前日期减去昨天日期,结果就是空白数据天数。VB的 now 可直接放入 long 类型的变量中,然后简单的减法几乎没有时间延迟,所以问题的关键就是如何将日期“快速”转换到 "long"?例:
    日期数据是长整数如  19901219
    如何转换成 33226 呢 ?