Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 时间计算类型不匹配_Excel_Vba - Fatal编程技术网

Excel 时间计算类型不匹配

Excel 时间计算类型不匹配,excel,vba,Excel,Vba,我正试图计算两个日期之间的秒差,精确到小数点后两位。但是,每当我执行代码时,就会出现错误13,类型不匹配。我在网上搜索过,尝试过很多变体,但我总是以类型不匹配而告终。我不知道如何解决这个问题。有人能教我怎么做吗 信息:最初使用的代码来自 以下是当前代码: Sub Query() Dim Beginning As Date: Beginning = Now: Dim Duration As Double ... more code ... Duration = Round(

我正试图计算两个日期之间的秒差,精确到小数点后两位。但是,每当我执行代码时,就会出现错误13,类型不匹配。我在网上搜索过,尝试过很多变体,但我总是以类型不匹配而告终。我不知道如何解决这个问题。有人能教我怎么做吗

信息:最初使用的代码来自

以下是当前代码:

Sub Query()
    Dim Beginning As Date: Beginning = Now: Dim Duration As Double
    ... more code ...
    Duration = Round((Now- Beginning) * 60 * 60 * 24, 2)
End Sub
这是工作,谢谢你,大本!还有,谢谢你,西达斯·罗特

顺便说一句,我改成了你提到的计时器,BigBen,它好多了。:)

服务很好,再次感谢

亲切问候,, 约瑟夫


  • 格式
    返回一个
    变量/字符串
    ,您不能将其分配给
    双精度
    。链接的答案不正确

  • 函数当前正在以秒为单位获取
    DateDiff
    的结果,并通过除以将其转换回天。如果你想要几分之一秒,你需要一种不同的方法
    DateDiff
    只能返回以整秒为单位的差值

  • 只需将两个日期之间的差值乘以60*60*24即可。然后,您可以根据需要进行四舍五入:

    Public Function DifferenceInSeconds(ByVal EarlierDate As Date, ByVal LaterDate As Date) As Double
        DifferenceInSeconds = (LaterDate - EarlierDate) * 60 * 60 * 24
    End Function
    

    格式
    返回一个
    变量/字符串
    。链接答案需要修复。而且该函数不会在几秒钟内返回差值。
    /60/60/24
    DateDiff
    的结果从秒转换回天…您是否尝试使用计时器?我不确定您所说的计时器是什么意思-这是Excel VBA中的特定对象吗?我正试图计算一段代码运行所需的时间。是的,
    Timer
    更适合您想要做的事情:-)。无论如何,我很乐意帮忙。重要的是你得到了你需要的答案,即使需要一点时间。谢谢你,BigBen,我用你的建议更新了原始帖子中的代码,并发布了结果。这给了我一个意想不到的结果。谢谢你,西达斯·罗特。我不知道如何将你的建议合并到可行的代码中,我道歉。@Joseph316:我相信你使用的是相反的日期:)啊,你是对的!尴尬。好的,我已经修好了,哈哈。但是,我仍然没有得到任何小数位-知道为什么吗?@Joseph316-去掉舍入,看看原始结果:-)@Joseph316-需要注意的一点是,
    Round
    的工作方式不同于
    WorksheetFunction.Round
    。但这两个数字,四舍五入到小数点后2位,分别是1和0。为了便于将来参考,请使用
    工作表函数.Round
    应用程序.Round
    ,而不是
    Round
    函数。使用四舍五入,这可能不是您想要的。
    Public Function DifferenceInSeconds(ByVal EarlierDate As Date, ByVal LaterDate As Date) As Double
        DifferenceInSeconds = (LaterDate - EarlierDate) * 60 * 60 * 24
    End Function